选项构建器
🏗️ `pkg/sdk/builders.go` — 链式 With* 函数。
ScreenshotOption 是函数式选项,With* 函数返回它,组合传入 Capture。
📁 源码:
pkg/sdk/builders.go
常用构建器
| 函数 | 说明 |
|---|---|
WithFullPage() | 整页截图 |
WithViewport(w, h) | 视口 |
WithHTML() | 采 HTML |
WithConsoleLogs() | 采 Console |
WithHAR() | 采网络 HAR |
WithCookies() | 采 Cookies |
WithTimeout(d) | 超时 |
WithDelay(d) | 额外等待 |
WithProxy(p) | 代理 |
WithUserAgent(ua) | UA |
WithDevice(name) | 设备预设 |
WithFormat(fmt, q) | 输出格式 |
WithOutputPath(p) | 输出目录 |
WithBlacklist(enabled) | 黑名单开关 |
完整列表见源码
builders.go。
链式组合
工作原理
函数式选项,类型安全可组合
每个 With* 修改 *ScreenshotOptions:
go
type ScreenshotOption func(*ScreenshotOptions)
func WithFullPage() ScreenshotOption {
return func(o *ScreenshotOptions) { o.FullPage = true }
}Capture 先建默认 ScreenshotOptions,依次应用各 option,再 mergeWithScreenshotOptions 合并到基线。
这种"函数式选项"模式的好处:零值即默认、可任意组合、新增选项不破坏旧调用方。
示例
go
res, _ := client.Capture("https://example.com",
sdk.WithFullPage(),
sdk.WithViewport(1920, 1080),
sdk.WithHTML(),
sdk.WithConsoleLogs(),
sdk.WithDelay(2*time.Second),
sdk.WithProxy("http://proxy:8080"),
)子专题
各专项构建器有单独详解:截图、视口、代理、Cookie、指纹、JS、表单、黑名单、端口。
构建器分类
按职责归类,所有 With* 构建器可归为以下几类: