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},
})