Spix0r/robofinder
GitHub: Spix0r/robofinder
Robofinder 通过挖掘 Archive.org 上目标网站的历史 robots.txt 快照,帮助安全研究人员发现已被删除但可能仍存活的隐藏路径与端点。
Stars: 253 | Forks: 23
Robofinder
_____ _ __ _ _
| __ \ | | / _(_) | |
| |__) |___ | |__ ___ | |_ _ _ __ __| | ___ _ __
| _ // _ \| '_ \ / _ \| _| | '_ \ / _` |/ _ \ '__|
| | \ \ (_) | |_) | (_) | | | | | | | (_| | __/ |
|_| \_\___/|_.__/ \___/|_| |_|_| |_|\__,_|\___|_|
通过挖掘 Wayback Machine 上的每一个历史 robots.txt 快照,发现隐藏的 endpoint。
## 为什么选择 Robofinder?
网站通常会清除 `robots.txt` 中的敏感路径——但 **Wayback Machine 保存了所有被爬取过的版本**。
Robofinder 查询 Archive.org 的 CDX API 来拉取目标的所有历史 `robots.txt` 快照,对每个 `Allow`、`Disallow` 和 `Sitemap` 指令进行去重,并打印完整列表。那些已在生产环境中被悄悄移除的路径可能依然存活且可访问。
**专为:** bug bounty 侦测 · OSINT · 攻击面映射 · 遗忘 endpoint 发现而构建
## 安装
```
pip install robofinder
```
从源码安装
```
git clone https://github.com/Spix0r/robofinder
cd robofinder
pip install .
```
## 快速开始
```
# 单一目标
robofinder -u https://example.com
# 待探测的完整 URLs
robofinder -u https://example.com -c
# 直接 pipe 到 httpx 或 nuclei
robofinder -u domains.txt -c -s | httpx -silent -mc 200
robofinder -u https://example.com -c -s | nuclei -t exposures/
```
## 用法
```
robofinder -u URL [options]
```
| 参数 | 完整形式 | 默认值 | 描述 |
|------|-----------|---------|-------------|
| `-u` | `--url` | — | 目标 URL 或每行包含一个 URL 的文件 |
| `-o` | `--output` | — | 输出到终端(无值)或保存到文件(有值) |
| `-f` | `--format` | `txt` | 输出格式:`txt`、`json` 或 `both` |
| `-c` | | — | 在每个路径前加上目标 URL(完整 URL) |
| `-p` | | — | 从历史路径中提取 URL 参数 |
| `-t` | `--threads` | `1` | 抓取线程数 |
| `-r` | `--rate-limit` | `2.0` | 发送到 Archive.org 的最大请求数/秒 |
| | `--cooldown` | `10` | 域名之间的等待秒数 |
| `-s` | `--silent` | — | 隐藏 banner |
| | `--debug` | — | 详细的调试输出(输出到 stderr) |
### 扫描域名列表
创建 `domains.txt`:
```
https://example.com
https://target.org
api.example.com
```
```
robofinder -u domains.txt -o all_paths.txt
```
### 结合 jq 输出 JSON
```
# 保存到文件
robofinder -u https://example.com -f json -o results
# Pipe 到 jq
robofinder -u https://example.com -f json | jq '.["example.com"].paths[]'
# 统计每个 domain 的 paths 数量
robofinder -u domains.txt -f json | jq 'to_entries[] | "\(.key): \(.value.count) paths"'
```
### 提取遗忘的 URL 参数
```
robofinder -u https://example.com -p
# 返回在历史 paths 中找到的 parameter 名称,例如:
# id
# token
# redirect_url
```
## 速率限制
Robofinder 内置了 **令牌桶速率限制器**,因此它绝不会向 Archive.org 发起猛烈请求。
- 默认:**2 req/s** —— 完全在 Archive.org 的容忍范围之内。
- 遇到 HTTP **429** 时:进行指数退避并自动重试。
- 遇到超时/连接错误时:进行退避重试(最多尝试 7 次)。
- 使用 `-r` 覆盖:使用 `-r 0.5` 以保持保守,或在快速网络环境下使用 `-r 5`。
```
# Conservative 模式
robofinder -u https://example.com -r 1 --cooldown 30
```
## 更新日志
参见 [CHANGELOG.md](CHANGELOG.md)。
## 许可证
[MIT](LICENSE) © [Spix0r](https://github.com/Spix0r)标签:ESC4, OSINT, Python, Web安全, 实时处理, 攻击面测绘, 无后门, 蓝队分析, 逆向工具