v0.3.3

Option 欄位

最後更新


browser.Option 的每個欄位、維持零值時採用的值,以及欄位之間的交互作用。

欄位


欄位型別未設定時說明
IdleWaittime.Duration2s每次 settle、SettleJS 與 consent 執行的上限;DOM 穩定視窗為 min(400ms, IdleWait)
MaxLengthint1048576(1 << 20)Markdown 輸出截斷到此 byte 數,可能切開多位元組字元;負值停用截斷;TypeHTML 與 TypeJSON 不套用
UserAgentstringDefaultUserAgent同時是瀏覽器快取鍵的一部分
KeepLinksboolfalse轉換輸出保留連結、圖片與 nav / header / footer / aside
StealthJSstring內嵌 stealth.js以 EvalOnNewDocument 注入;會取代預設值,空字串恢復預設,見 反偵測
SettleJSstring內嵌 listener.jsDOM 穩定後執行一次;空字串恢復預設
Viewport*Viewport1280 × 960DeviceScaleFactor 為 0 時視為 1
SameSessionboolfalse以帶本機 Chrome Cookie 的暫存設定檔啟動,見 Cookie 工作階段
Headlessboolfalse強制 headless,不做有頭重試
Visibleboolfalse有 GUI 時直接有頭、不重試;沒有 GUI 時退回 headless 優先。Headless 為 true 時忽略,見 Fetch 路由
Profilestring"Default"Chrome 設定檔目錄名,僅 SameSession 使用
TypeintTypeMarkdownTypeMarkdown、TypeHTML 或 TypeJSON,見 輸出格式
ScrollCountint3傳負值表示不捲動

Fetch 會先複製 Option 再補預設值,傳入的值不會被修改,可在多次呼叫間重用。

Viewport


  1. type Viewport struct {
  2. Width int
  3. Height int
  4. DeviceScaleFactor float64
  5. }

欄位交互作用


組合效果
Headless: true + session 網域以 headless 為準,忽略 session 網域清單
Headless: true + Visible: true以 headless 為準,忽略 Visible
Visible: true 但沒有 GUI等同未設定:headless 優先,無法有頭重試
Headless: true + SameSession: true在暫存 Cookie 設定檔上跑 headless 瀏覽器
SameSession: false + ProfileProfile 不生效
ScrollCount: 0視為未設定,捲動 3 次;要停用請傳 -1
IdleWait 小於 400msDOM 穩定視窗縮短為 IdleWait

範例


  1. result, err := browser.Fetch(ctx, href, 45*time.Second, &browser.Option{
  2. Type: browser.TypeMarkdown,
  3. KeepLinks: true,
  4. ScrollCount: 5,
  5. IdleWait: 3 * time.Second,
  6. Viewport: &browser.Viewport{Width: 1440, Height: 2000},
  7. })
EN