Repository navigation
Bug Fixes
-F 解析 .dat 文件无输出 (#127)
RunnerOption在 proxy 重构中新增了ProxyDialTimeout/ProxyDialContext两个func类型字段,Go 的json.Marshal对含有func字段的结构体在类型检查阶段直接报错(即使值为 nil),导致Config.ToJson()将错误字符串写入.dat文件的 config header,使所有.dat文件损坏- 为
RunnerOpt添加json:"-"tag,与Config中其他所有运行时字段保持一致 ToJson错误处理改为返回"{}"而非错误字符串,防止写入损坏的.dat文件parseSegment增加 fallback:config header 解析失败时用默认 config 兜底,兼容已损坏的旧版 .dat 文件,可恢复其中的扫描数据parseScanResultData/parseSmartResultData遇到单行 JSON 解析错误时 skip 而非中止整段解析
其他修复
- 修复
-F格式化输出中结果重复的问题 - 修复
-o自定义分隔符未生效的问题 - 修复 jsonlines 格式解析 smart/alive 结果失败的问题
- 模板加载时跳过编译错误的模板而非中止整个加载过程
New Features
SDK 集成机制
gogo 从 CLI 工具扩展为可嵌入的扫描引擎,新增以下 SDK 集成点:
context.Context支持:扫描任务可通过 context 取消,优雅退出ResultCallback:实时回调接收每条扫描结果,无需等待扫描结束ResourceProvider:外部注入指纹/模板/端口配置等资源,替代内嵌数据BeforeInit/AfterInit钩子:扫描初始化前后的自定义扩展点RunWithArgs入口:暴露可复用的 runner,支持编程式调用- 实例级 proxy dialer(
RunnerOption.ProxyDialContext):并发多任务可使用不同代理,不再共享全局DefaultTransport
FingerPrintHub 主动指纹
- 集成 FingerPrintHub 主动指纹匹配引擎,通过
-vv参数触发 - 基于 Aho-Corasick 多模式匹配加速的指纹预筛选
大格式化输出加速
-F处理大.dat文件时性能优化,显著减少格式化输出耗时
Underlying Changes
以下变更来自底层依赖库的升级,对 gogo 的扫描能力和准确率有直接影响:
fingers(指纹引擎)
- 引擎级
CaseInsensitive开关,统一大小写匹配策略 FingersEngine自持PortPreset,消除全局变量依赖passive_onlybuild tag,允许不依赖net/http的被动模式编译- Hub/Xray 引擎改用完整模板执行,修复多请求模板
body_N塌陷为body_1的漏匹配 - 主动探测新增跨 finger 的请求缓存,相同
send_data路径只发一次 HTTP 请求 - CPE vendor:product 辅助函数,为自动化漏洞关联提供基础
neutron(模板引擎)
- 新增
ChainExecutor,通用模板链遍历执行器,替代原有的手动遍历逻辑 - 对齐 nuclei 的 redirect 策略(DontFollow / FollowAll / FollowSameHost)
- per-context CookieJar:每次模板执行自动创建独立 CookieJar,redirect 链内 Set-Cookie 正确传递
- 独立
HTTPMatch/HTTPExtract函数,可在非模板上下文中直接使用 - 全面对齐 nuclei 行为:下线 RootURL/favicon 自造机制,收敛到标准模板语义
utils(基础工具库)
httputils:HTTP 响应自动 charset 解码(GBK/Shift_JIS/EUC-KR/Big5 → UTF-8),基于 Content-Type header 和 HTML meta 标签自动检测ahocorasick:Aho-Corasick 多模式匹配引擎,支持正则文字提取和双关键字索引,用于指纹预筛选加速parsers:统一的Result基础类型、NeutronResult/ProtonFinding类型,标准化扫描结果表示httpx:通用 HTTP client 构建器,支持 proxy/timeout/redirect 预设
proxyclient(代理客户端)
- 新增 WireGuard 协议支持
- 新增 Trojan/VMess/VLess/AnyTLS/Hysteria2 协议(via extra/ 模块)
- Clash 订阅解析支持
- extra/ 重构为独立 Go 模块,按需引入
logs(日志库)
- 并发写入 mutex 保护,修复高并发场景下的竞态问题
Build
go.mod锁定go 1.17,保持 Go 1.11 / WindowsXP 交叉编译兼容- Release 构建切换至 Go 1.17,二进制体积 ~4 MB(upx 后),相比 Go 1.24 构建减少 ~30%
- 移除未使用的
nmap_service_probes(661 kB)和nmap_services(226 kB)内嵌数据 - goreleaser 新增
goregexptag,排除 go-re2 wasm 引擎(~5 MB)