SDK 总览
🧩 `pkg/sdk` — 把 snir 能力暴露为 Go API。
Go SDK 让你把网页截图/情报采集嵌入自己的 Go 程序,链式配置、类型安全、自带连接池与黑名单。
📁 源码目录:
pkg/sdk/
两种风格
选哪个?看场景
| 风格 | 入口 | 适合 |
|---|---|---|
链式 Capture | 可变参数 With* | 灵活组合、可选参数多、写起来省 |
结构体 Screenshot | 传 *ScreenshotOptions | 显式完整、配置来自外部反序列化/配置文件 |
两者底层走同一套流水线,结果一致。不确定就先用 Capture。
核心入口
| 入口 | 源码 | 说明 |
|---|---|---|
Client | client.go#L54 | 长生命周期客户端 |
NewClient(opts) | client.go#L78 | 构造 |
NewRemoteClient(wsURL, max) | client.go#L113 | 远程 Chrome |
Shared* 函数 | shared.go | 无需管理 Client |
文件结构
| 文件 | 源码 | 内容 |
|---|---|---|
client.go | → | Client 与所有方法 |
options.go | → | ClientOptions/ScreenshotOptions |
builders.go | → | With* 链式函数 |
result.go | → | 结果包装 |
shared.go | → | 共享池便捷函数 |
targets.go | → | 目标展开 |
autoconnect.go | → | 自动连接 |
最小示例
go
client, _ := sdk.NewClient(sdk.DefaultClientOptions())
defer client.Close()
result, _ := client.Capture("https://example.com",
sdk.WithFullPage(),
sdk.WithHTML(),
sdk.WithConsoleLogs(),
)内部视角
实现细节见 pkg/sdk(内部)。
调用穿越分层时序
一次 Capture 调用自上而下穿越 SDK→Runner→Provider→CDP 各层,再自下而上返回 Result:
SDK 是最上层封装——绝大多数场景只需调 sdk.Shared*,底层 runner/provider/cdp 自动串联。