只补全省略的部分:协议默认 https,路径一律换成根目录的 robots.txt。
抓取通道:默认走本站的同源转发(nginx 只把请求变成 https://目标域名/robots.txt 这一个地址),拿不到再试浏览器直连,最后才降级到公开的第三方中继。结果区会写明这次到底是哪条通道响应的。
抓取通道尝试记录
分组明细
连续的 User-agent 行共用后面那批规则;每一组单独列出它的 Allow / Disallow / Crawl-delay 与其它指令。
Sitemap 登记
Sitemap 指令与分组无关,爬虫在文件任意位置声明的地址都会被收录到这里。
这份 robots.txt 没有声明任何 Sitemap。
路径放行判定
填一个路径和一个爬虫名,按标准规则(最长匹配优先、同长度 Allow 优先、找不到专属分组就落到 * 分组)给出结论,并说明是哪一条规则命中的。
还没有检测结果,先在上面检测一个站点,判定才会用到它的规则。
语法与 SEO 体检
按各爬虫的实际处理方式检查写法:缺前导斜杠、空的 Disallow、写在任何 User-agent 之前的指令、未编码的非 ASCII 路径、超长行、超大文件、重复或互相冲突的规则、爬虫不支持的 noindex。
原文预览
状态码语义
robots.txt 返回的状态码本身就是协议的一部分:Google 会按下面这套口径处理,5xx 时甚至会暂停对整站的抓取。
| 状态码 | 爬虫的处理方式 |
|---|---|
200 | 正常读取文件内容;文件为空同样视为「没有任何限制」,全部允许抓取。 |
404 | 没有 robots.txt:整站按全部允许处理,同时爬虫会记住这一点,不会每次都再来探。 |
401 / 403 | 读不到规则,Google 会当作「没有文件」继续抓取;Bing 等部分爬虫则按全站禁爬处理。想真正拦住爬虫要用认证或防火墙,而不是让 robots.txt 变成 403。 |
5xx | 服务器故障:Google 会在最长约一小时之内暂停对整站的抓取,因为它无法确认哪些路径是被禁止的。robots.txt 挂掉但主站正常,是最容易被忽略的事故。 |
301 / 302 | 跳转到新地址后继续读取;跳转到别的域名时,Google 会按跳转后的那份规则生效(本站会把最终状态一并显示出来)。 |
这是什么工具
RobotsCheck 抓取目标站点根目录下的 /robots.txt,按 RFC 9309 把它解析成「User-agent 分组 + 规则」的结构:逐组列出 Disallow / Allow / Crawl-delay 与其它指令,未知的指令原样保留;再把路径放行判定、语法体检和带行号的原文放在一起。最有用的是判定器:填一个路径和一个爬虫名,工具按「最长匹配优先、同长度 Allow 优先、没有专属分组就落到 * 分组」的标准算法告诉你这条 URL 到底能不能被抓,并指名是哪一行决定的。
解析、判定、体检全部在你的浏览器里完成。抓取默认经本站一条受限的同源转发:nginx 只允许把请求变成 https://<目标域名>/robots.txt,不接受端口、拒绝内网与元数据地址,并且关掉了访问日志,本站也不缓存任何检测结果。你输入的深层路径、查询参数与 user:pass@ 凭据在归一化阶段就被丢掉,不会进入请求。所以这不是一个「完全本地离线」的工具,但它不需要任何第三方服务就能工作。
功能
- 地址自动归一example.com、https://example.com/deep/path?x=1、甚至带 user:pass@ 的写法都能吃进来,统一成 https://example.com/robots.txt;只允许 http 与 https 两种协议。
- 按 RFC 9309 分组解析去掉 BOM、CRLF 与 # 注释,指令名大小写不敏感;连续的 User-agent 行合并成一组,Allow / Disallow / Crawl-delay / Sitemap 与未知指令分别归类,未知指令保留原文。
- 路径放行判定器支持 * 通配与 $ 结尾锚定,按最长匹配优先、同长度 Allow 优先取规则,空的 Disallow: 视为整组放行,找不到分组就按放行;结论下面一行说明命中了哪条规则、为什么。
- 语法与 SEO 体检缺前导斜杠、指令写在 User-agent 之前、路径里有未编码的非 ASCII 字符、单行超过 500 字符会被截断、文件超过 500KB 爬虫只读前一段、重复或互相冲突的规则、以及爬虫根本不支持的 noindex。
- 抓取通道如实标注本站转发优先、失败再降级到直连与公共中继,来源、HTTP 状态码、字节数、行数与耗时全部列出来,逐通道的尝试记录可以展开查看,方便判断是目标站的问题还是通道的问题。
- 带行号的原文与体检对照原文按行号显示并对指令名、值与注释做了轻量高亮,所有抓取内容都经过转义才写进页面;可一键复制原文或下载成 .txt,界面提供简体、繁體与 English 三套。
怎么用
- 输入域名或任意网址(粘整条带路径的链接也行),点「检测 robots.txt」,或直接点一个快捷样例。
- 先看概况与统计卡:来源通道、HTTP 状态、分组数、规则数、Sitemap 数与总体结论;概况下面的「抓取通道尝试记录」能告诉你直连是不是被挡了。
- 在「路径放行判定」里填一个你关心的路径与爬虫名,例如 /wp-admin/ 与 Googlebot,看结论与命中的规则。
- 按「语法与 SEO 体检」逐条修问题,改完再点原文区的「复制原文」或「下载 .txt」留档比对。
数据来源与口径
解析与判定口径来自 RFC 9309(Google 于 2022 年贡献给 IETF 的 robots.txt 规范):字段名大小写不敏感、路径按行长度做最长匹配、同长度时 Allow 优先、空的 Disallow 表示不限制。通配符 * 与结尾锚定 $ 是 Google 与多数主流爬虫长期支持的扩展,本工具一并实现。Crawl-delay 只有 Bing、Yandex、Seznam 等部分爬虫认,Google 明确忽略它;Host 是 Yandex 与百度的扩展;noindex 从来不是 robots.txt 的指令,写在里面不会被任何爬虫执行。
抓取内容来自目标站点自己发布的 robots.txt,本站不缓存、不存储任何检测结果,转发那条 nginx 规则关掉了访问日志;兜底用的公共中继地址写在 RobotsCheck/app.js?v=e18bb54c 顶部的 RELAYS 常量里,改这一处即可。体检阈值用的是公开文档里的数字:Google 只读取 robots.txt 的前 500KB,单行超过 500 字符的部分会被截掉,非 ASCII 字符必须先做百分号编码。
常见问题
- 为什么不让浏览器自己去抓?
- 同源策略不允许一个网页读取另一个域名的响应内容,除非对方在响应头里写明允许跨域,而几乎所有站点的 robots.txt 都没带这个头。所以本工具默认请本站转发一次(只转发 https://<域名>/robots.txt 这一个地址,拒端口与内网地址),概况区会标出这次是哪条通道给的结果。
- 经本站转发,会不会暴露我查了什么?
- 转发那条 nginx 规则关掉了访问日志,本站也不缓存、不存储任何检测结果;只有在请求真正发生的那一瞬间,服务器上才会出现你要查的域名。你输入的深层路径、查询参数与凭据在归一化阶段就被丢掉,不会离开浏览器。若降级到公共中继,请求会经过第三方服务器,那一方能看到域名 —— 但那是兜底路径,默认用不到。
- 判定结果和 Google 的判断一致吗?
- 核心算法一致:最长匹配优先、同长度 Allow 优先、* 通配、$ 结尾锚定、没有专属分组就落到 * 分组。差别在于 Google 还会做一层 URL 归一化(大小写、百分号编码等价、默认文档 index.html 与目录形式视为同一 URL),并对 401/403 与 5xx 有不同处理;这些情况工具会在体检和状态码语义里提示你。
- 在 robots.txt 里禁爬,就能挡住爬虫吗?
- 只能挡住守规矩的爬虫。robots.txt 是「请求许可」而不是访问控制,不守规矩的爬虫完全无视它,而它本身是公开可读的,等于把你的后台路径清单公布出去。真要限制访问请用登录鉴权或服务端规则。另外别指望 Disallow 能让已收录的页面消失:页面被禁止抓取后,索引里可能仍留着一条没有摘要的结果。
- 状态码为什么也值得看?
- 因为状态码本身就是协议的一部分:404 或空文件等于全站放行,Google 还会缓存这个判断;401/403 时 Google 当作没有文件、部分爬虫当作全站禁爬;而 5xx 会让 Google 在最长一小时内暂停抓取整站——主站正常但 robots.txt 报 500 是典型的隐形事故。检测完记得把状态码和来源通道一起看。
站内其他工具
解析与判定全部在浏览器完成 · 免费 · 支持中/繁/英