Options
⚙️ `pkg/runner/options.go` — 采集选项容器。
Options 是 snir 的核心配置载体,承载截图、网络、证据、安全等全部可调参数,被 Runner/Scanner/PoolDriver 与 SDK 构造器共用。
核心类型
| 符号 | 源码 | 说明 |
|---|---|---|
Options | L18 | 选项主结构 |
NewOptions() | L43 | 带安全默认值的构造 |
DefaultOptions | L50 | 默认实例 |
Validate() | L62 | 校验与归一化 |
MergeOptions(base, override) | L131 | 合并两份选项 |
字段分组
Options
├── 视图:ViewportWidth/Height/DeviceScaleFactor/FullPage
├── 网页:WaitUntil/Timeout/Delay/LoadTimeout
├── 证据:Screenshot/HTML/ConsoleLogs/HAR/Cookies/ScreenshotFullPage
├── 网络:Proxy/ProxyBypass/ExtraHeaders/UserAgent
├── 指纹:Locale/Timezone/Geolocation/WebRTC/Canvas
├── JS: ScriptsToInject/Actions[]
├── 安全:BlacklistEnabled/Blacklist/AllowedPorts
└── 输出:Writer(JSONL/CSV/Stdout)/OutputPath1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
NewOptions 安全默认
NewOptions 与 DefaultOptions 默认开启黑名单、设置合理超时与视口,确保开箱即安全。
Validate 流程
MergeOptions 语义
注意"零值"陷阱
MergeOptions:以 base 为底,override 中非零字段覆盖,零值字段保留 base。
这意味着你无法用 override 把某字段显式设为"零值/关闭"——例如想用 override 把 Timeout 改回 0(不限时),MergeOptions 会认为 0 是零值而保留 base 的值。这类需求得直接改 base 或用专门的禁用开关。