pkg/runner
🏃 `pkg/runner/` — 浏览器执行核心。
pkg/runner 是 snir 的心脏:驱动 Chrome、采集证据、管理连接池、处理代理/Cookie/黑名单/设备模拟。本页是该目录的总入口,子模块各有详解。
📁 源码目录:
pkg/runner/
子模块地图
子模块速查
| 子模块 | 源码 | 职责 | 详解 |
|---|---|---|---|
| 核心 | runner.go | Runner 单次执行 | → |
| Driver 接口 | driver.go | Driver 抽象 | → |
| Chromedp | driver_chromedp.go | CDP 实现 | → |
| Options | options.go | 配置容器 | → |
| Writer | writer.go | 多格式输出 | → |
| Pool | pool.go | 浏览器池 | → |
| PoolDriver | pool_driver.go | 池化执行 | → |
| 共享池 | pool_singleton.go | 进程单例 | → |
| 事件 | pool_events.go | 事件总线 | → |
| 黑名单 | blacklist.go | SSRF 防护 | → |
| 代理 | proxy.go | 代理提供者 | → |
| CookieJar | cookie_jar.go | Cookie 容器 | → |
| Netscape | cookie_netscape.go | cookies.txt | → |
| Cookie 工具 | cookie_util.go | 解析转换 | → |
| 设备预设 | device_presets.go | 移动设备 | → |
| 发现 | discovery.go | 自动发现 Chrome | → |
调用关系
设计要点
- 依赖反转:
Runner依赖Driver接口,chromedp 是其实现,可替换 - 池化复用:
DriverPool避免反复启动 Chrome - 安全默认:
Options默认开黑名单、合理超时 - 多 Writer 分发:一次采集多种输出