Skip to content

Scan

🎯 `pkg/scan/scan.go` — 批量扫描编排。

pkg/scanRunner 之上做批量编排:目标展开、并发调度、池复用、重试、结果聚合。

📁 源码:pkg/scan/scan.go

核心类型

符号源码说明
ConfigL18扫描配置(线程/重试/池)
ScannerL28单浏览器扫描器
NewScanner(opts)L43构造单实例扫描器
NewPooledScanner(opts, cfg)L107构造池化扫描器
ExpandTargets(input)L196展开目标(含 CIDR/文件)
(*Scanner) Scan(targets)L230执行扫描

Config 字段

字段说明
Threads并发数
MaxRetries单目标最大重试
UsePool是否用 DriverPool
PoolSize池大小
ContinueOnError出错继续
OutputPath结果输出路径

Scan 流程

ExpandTargets

ExpandTargets 把多种输入归一为目标列表:

支持 CIDR 见 scan cidr,文件见 scan file

单实例 vs 池化

选型:少量用 NewScanner,批量用 NewPooledScanner

  • NewScanner:每次新建 Runner,适合少量目标或简单场景——省去建池开销
  • NewPooledScanner:复用 Chrome 池,适合批量——避免反复启动浏览器的巨大开销

10 个以内目标用 NewScanner 即可;上百上千必上 NewPooledScanner,否则每个目标都启停一次 Chrome 会慢到无法接受。

与 CLI/API 的关系

CLI scan * 与 API /screenshot/batch 最终都构造 Scanner/PooledScanner 执行:

下一步

基于 MIT 许可发布