Skip to content

v2.15.0

Latest

Choose a tag to compare

@M09Ic M09Ic released this 14 Jul 08:45
· 9 commits to master since this release

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_only build 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 新增 goregexp tag,排除 go-re2 wasm 引擎(~5 MB)