工具使用要点60 条

katana 爬取与 JS 解析

katana 爬取站点并解析 JS 中的接口路径,输出 URL 清单供后续验证:-jc 开启 JS 解析,-d 控制深度,注意别爬出授权范围。

katana 做什么

katana 是 ProjectDiscovery 的爬虫,除了跟随链接抓取页面,还能解析 JavaScript 里拼接出来的接口路径、静态资源与隐藏参数。它的输出是 URL 清单,天然适合喂给 httpx、nuclei 之类的工具做下一步处理。爬取会自然向目标发出大量请求,深度、速率与外链处理都需要事先约束在授权域名内。

基本信息

用途站点爬取与 JS 中的路径提取
关键参数-d 深度、-jc 解析 JS、-kf 已知文件、-rl 速率限制
输入-u 单目标或 -list 批量种子文件
输出URL 清单,-jsonl 可输出结构化记录
联动输出交给 httpx 探活、nuclei 检测

典型使用场景

  • 接口面梳理:前端路由与 API 路径大多写在 JS 里,正则式爬取比手工翻页效率高
  • 隐藏入口发现:找未被导航暴露的页面、测试环境路径与调试接口
  • 配合检测工具:把 URL 清单批量喂给成像类与检测类工具
  • 复测对比:前后两次爬取结果做差异,观察功能改动带来的表面变化
  • 参数收集:为后续手工测试准备带参 URL 样本

爬取示例

爬取示例
# 常规爬取:深度 3,开启 JS 解析,结果落文件
katana -u https://example.com -d 3 -jc -kf all -o urls.txt
# 多目标批量,限制速率减少对业务的影响
katana -list seeds.txt -d 2 -jc -silent -rl 60
# 只保留去重后的 URL,便于后续处理
katana -u https://example.com -jc -d 2 -silent | sort -u > uniq.txt
# 输出结构化记录,保留来源与状态信息
katana -u https://example.com -d 2 -jc -jsonl -o katana.jsonl

输出逐列读法

输出内容含义使用注意
URL 行抓取到的链接确认域名属于授权范围
来源字段该 URL 从哪个页面或 JS 文件提取-jsonl 下可见,便于回溯
目录层级路径深度反映功能结构深度过大易爬入无关区域
静态资源js 与 css 等文件其中的接口路径才是关注点
爬虫会跟随外链跳到第三方域名:用深度限制与外链过滤把请求约束在授权域名内,避免越界。
JS 里提取的接口要记录来源页面:脱离上下文的路径清单很难判断哪个接口归属于哪个功能,后续验证容易走偏;结果先按主机与路径去重,再交给下一个工具,可以显著减少无效请求。

易错点

  • 爬虫跑进第三方站点产生越界请求
  • JS 中提取的接口未记录来源页面
  • 深度设置过大,把会话失效页面与错误页混入清单
  • 未限制速率,抓取量过大影响业务响应
  • 清单未去重与分类,同一接口重复出现使后续处理量成倍增长

数据来源与参考

  • ProjectDiscovery katana 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌