核心概念
最後更新
一次
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