v0.3.3

核心概念

最後更新


一次 Fetch 依序執行的步驟,從 URL 驗證到回傳 Result,並連到說明各步驟的頁面。

擷取流程


#步驟內容細節
1驗證補齊 Option 預設值;URL 必須有 scheme 且 hostname 含 .Option 欄位
2路由依 Option.Headless、Option.Visible、session 網域清單與 GUI 有無決定 headless 或有頭Fetch 路由
3取得瀏覽器以 (headless, userAgent) 為鍵的快取實例;設 SameSession 時改用帶 Cookie 的一次性實例瀏覽器快取、Cookie 工作階段
4取得名額頁面等待全域併發 semaphore瀏覽器快取
5開啟頁面空白分頁套用 viewport 與 stealth 腳本,接著導航並等待 load反偵測
6檢查 URL導向後 URL 的路徑片段或 query 值為 404/403 時以 *Error 結束疑難排解
7資料短路JSON 與 XML 文件直接回傳原始文字並填 ContentType輸出格式
8等待穩定DOM 穩定等待,接著執行 SettleJS頁面載入
9同意橫幅最多兩輪同意橫幅處理同意橫幅
10捲動最多 ScrollCount 輪,每輪一份快照頁面載入
11轉換快照轉成 HTML、Markdown 或 JSON 樹輸出格式

Context 與逾時


傳給 Fetch 的 ctx 會傳到流程中每個等待點:semaphore、settle、consent 執行與捲動延遲。timeout 大於 0 時每次嘗試的頁面載入各包一層子 context,因此有頭重試會重新取得一份完整的逾時。SameSession 的 Cookie 擷取與瀏覽器啟動發生在子 context 建立之前,只受 ctx 限制。settle 與 consent 另以 IdleWait 限制每次等待。

一次呼叫不做的事


  • 不保留分頁:每次呼叫建立頁面並在回傳前關閉
  • 除了 StealthJS 與 SettleJS 之外不點擊、不輸入、不執行自訂腳本;互動式分頁 API 已於 v0.3.2 移除,見 已移除 API
EN