Abromeit/sitemap-finder
GitHub: Abromeit/sitemap-finder
一个轻量级Bash脚本,通过解析robots.txt和暴力枚举约1700个常见路径来自动发现网站隐藏的XML sitemap文件。
Stars: 8 | Forks: 2
# [Abro 的 Sitemap 查找器](https://github.com/Abromeit/sitemap-finder)
一个经过实战检验的 bash 脚本,用于查找网站上的 XML sitemap。
## 问题所在
你很清楚这个流程。你在进行审计,第一步是检查 `robots.txt` 以获取 sitemap 的位置。大多数情况下,它就在那里。但有时……它并不在。
于是你开始猜测。`sitemap.xml`、`sitemap_index.xml`、`sitemap-1.xml`……你摸索了几分钟,也许就找到了。这个脚本就是为你代劳这种猜测工作的。如果它最终一无所获,你可以确信进一步的黑盒测试是毫无意义的。该是拿起电话打给客户的时候了。
## 解决方案
这是一个简单的两阶段过程:
1. **常规方法**:首先检查 `/robots.txt` 中的 `Sitemap:` 条目。如果找到,就会将其打印出来,皆大欢喜。
2. **暴力方法**:如果 `robots.txt` 没有提供线索 _(或者未使用 `--quick` 模式)_,脚本会根据我多年来在实际环境中见过的路径,有条不紊地测试一个包含约 1,700 个潜在 sitemap URL 的列表。
脚本通过 HEAD 请求检查每个候选 URL,直到收到 `2xx` 状态码以及看起来像 XML、GZIP 或纯文本的 content type。(由于 Google 允许使用 `.txt` 格式的 sitemap,我们也会对其进行检查。)
## 使用方法
1. 赋予其可执行权限:
chmod +x sitemap-finder.sh
2. 针对某个网站运行它:
./sitemap-finder.sh 'https://www.example.com/'
或者,在首次发现结果后立即停止:
./sitemap-finder.sh --quick 'https://www.example.com/'
### 示例输出
```
===============================================
= sitemap finder started for: =
= =
= https://www.example.com =
= =
= 2025-07-28 20:11:26h ========================
- checking robots.txt...
- no hint in robots.txt
- starting try & error run...
- testing *.xml...
- Found URL with code 200 and type application/xml: https://www.example.com/en/googlesitemap.xml
- testing *.xml.gz...
- testing *.txt...
= 2025-07-28 20:14:14h ========================
= =
= done. =
= =
= script runtime: 217sec. ~= 3.61min. =
= sum of http-requests: 1684 =
= avg. requests / sec: 7.76 =
===============================================
```
真实案例:

## 配置
你可以使用以下标志来调整脚本的行为。
- `--quick` / `-q`:默认情况下,即使在找到有效的 sitemap 之后,脚本也会继续搜索。如果你希望它在首次命中后立即退出,请启用此标志。
### 依赖项
你可能已经安装了这些工具,但 Sitemap Finder 需要:
- `bash`
- `curl`
- `tput`(用于花哨的颜色)
- `bc`(用于最后的数学计算)
- `perl`(用于那一个小小的正则表达式)
## 常见问题
**问:为什么脚本不能再快一点?**
**答:** Sitemap Finder 的运行速度已经超过了“良好公民模式”——同时又没有把扫描变成对目标服务器的真正压力测试。这是因为每个请求都发送到同一个主机,用更多的并行请求去猛烈攻击它,嗯,并不理智(某些请求可能不再被远程服务器正确响应,甚至更糟)。
所以,这是一个最佳平衡点:我们尽可能快,同时又不会给配置良好的服务器带来太多麻烦。毕竟这只是一些顺序请求,而不是像 DOS 攻击那样成百上千次的请求。如果远程机器连这都处理不了,那它也无法处理正常的互联网流量。
而你——只需查查邮件或去喝杯咖啡,脚本几分钟内就会完成。
## 版权
版权所有 (c) 2025 Daniel Abromeit (https://daniel-abromeit.de/)
在 MIT 许可下发布。[查看 LICENSE 了解详细信息。](LICENSE)
标签:robots.txt解析, SEO工具, Sitemap, Web安全, XML Sitemap, 实时处理, 应用安全, 插件系统, 站点地图发现, 网站审计, 蓝队分析, 资产测绘, 路径爆破, 黑盒测试