← 返回科研导航

robots.txt 检测

分组解析 · 路径放行判定 · 语法体检

English 简体 繁體

只补全省略的部分:协议默认 https,路径一律换成根目录的 robots.txt。

快捷样例

抓取通道:默认走本站的同源转发(nginx 只把请求变成 https://目标域名/robots.txt 这一个地址),拿不到再试浏览器直连,最后才降级到公开的第三方中继。结果区会写明这次到底是哪条通道响应的。

路径放行判定

填一个路径和一个爬虫名,按标准规则(最长匹配优先、同长度 Allow 优先、找不到专属分组就落到 * 分组)给出结论,并说明是哪一条规则命中的。

还没有检测结果,先在上面检测一个站点,判定才会用到它的规则。

状态码语义

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@ 凭据在归一化阶段就被丢掉,不会进入请求。所以这不是一个「完全本地离线」的工具,但它不需要任何第三方服务就能工作。

功能

怎么用

  1. 输入域名或任意网址(粘整条带路径的链接也行),点「检测 robots.txt」,或直接点一个快捷样例。
  2. 先看概况与统计卡:来源通道、HTTP 状态、分组数、规则数、Sitemap 数与总体结论;概况下面的「抓取通道尝试记录」能告诉你直连是不是被挡了。
  3. 在「路径放行判定」里填一个你关心的路径与爬虫名,例如 /wp-admin/ 与 Googlebot,看结论与命中的规则。
  4. 按「语法与 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 是典型的隐形事故。检测完记得把状态码和来源通道一起看。

站内其他工具

解析与判定全部在浏览器完成 · 免费 · 支持中/繁/英