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 里提取的接口要记录来源页面:脱离上下文的路径清单很难判断哪个接口归属于哪个功能,后续验证容易走偏;结果先按主机与路径去重,再交给下一个工具,可以显著减少无效请求。