用途:解决在 Yakit History 中积累某站点大量流量后,如何按域名捞取所有唯一路径、拿到登录 Cookie,并把这些路径沉淀成可复用 Payload 字典,再带登录态逐路径发包扫描或 Fuzz 的痛点。
主要能力:一是按域名从 History 捞流量并做 URI 去重、提取登录 Cookie;二是把去重路径写入 Yakit Payload 字典并带 Cookie 逐条发包扫描,用状态码区分存活与不存在。
使用方式:数据来源为 db.QueryHTTPFlowsByKeyword(domain),返回 *HTTPFlow 迭代器;flow.Url 为完整 URL;flow.Request 是 codec.StrconvQuote 后的字符串,需 codec.StrconvUnquote 取原始字节;登录 Cookie 用 poc.GetHTTPPacketHeader(req, "Cookie") 获取。去重 key 采用去掉 scheme 与 query 后的 host+path。沉淀字典用 db.SavePayload(group, dedupPaths(paths))~,迭代用 db.YieldPayload(group),发包用 poc.HTTP(raw, poc.timeout(5), poc.save(false))~,状态码用 poc.GetStatusCodeFromResponse(rsp)。示例脚本通过 yak <file> 自测,扫描示例会起本地真实靶站发真实 HTTP 请求。
适用场景:已有某站点大量 History 流量、需要提取路径字典并带登录态批量扫描或 Fuzz 的场景。
限制与坑:flow.Request/flow.Response 为 strconv-quote 后字符串,直接当原文会带转义;db.YieldPayload(group) 直接产出 payload 字符串而非带 .Content 的对象;db.SavePayload 写的是 profile 持久库,脚本里应用唯一前缀 group 并 defer db.DeletePayloadByGroup(group) 清理;去重须先剥掉 query;发包扫描务必 poc.timeout(...) 与 poc.save(false) 避免卡死与污染 History。官方文档未提供的内容暂未提供。