v0.3.2

Option Fields

Last updated

Every field of browser.Option, the value used when it is left at its zero value, and how fields interact.

Fields

Field Type When unset Notes
IdleWait time.Duration 2s Cap for each settle, SettleJS and consent evaluation; the DOM stability window is min(400ms, IdleWait)
MaxLength int 1048576 (1 << 20) Markdown output is cut to this many bytes, which can split a multi-byte character; a negative value disables truncation; ignored by TypeHTML and TypeJSON
UserAgent string DefaultUserAgent Also part of the browser cache key
KeepLinks bool false Keep links, images and nav / header / footer / aside in converted output
StealthJS string embedded stealth.js Injected with EvalOnNewDocument; replaces the default, an empty string restores it, see Anti-Detection
SettleJS string embedded listener.js Evaluated once after the DOM settles; an empty string restores the default
Viewport *Viewport 1280 × 960 DeviceScaleFactor 0 is treated as 1
SameSession bool false Temporary profile with local Chrome cookies, see Cookie Sessions
Headless bool false Forces headless with no headed retry
Profile string "Default" Chrome profile directory name, used only with SameSession
Type int TypeMarkdown TypeMarkdown, TypeHTML or TypeJSON, see Output Formats
ScrollCount int 3 A negative value means no scrolling

Fetch copies the Option before filling defaults, so the value you pass is never modified and can be reused across calls.

Viewport

type Viewport struct {
    Width             int
    Height            int
    DeviceScaleFactor float64
}

Field interactions

Combination Effect
Headless: true + session domain Headless wins; the session domain list is ignored
Headless: true + SameSession: true A headless browser on the temporary cookie profile
SameSession: false + Profile Profile has no effect
ScrollCount: 0 Treated as unset, so 3 passes; use -1 to disable
IdleWait below 400ms The DOM stability window shrinks to IdleWait

Example

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