直接答案:这是一个只在浏览器本地运行的 robots.txt 判定器。粘贴一段 robots.txt、填一个路径,它会按 RFC 9309 的“先选最具体的 User-agent 组、再取最长路径规则”分别判定 GPTBot、OAI-SearchBot、PerplexityBot、Bytespider、ClaudeBot 是放行还是屏蔽,并指出是哪一行规则生效。它不联网、不抓你的站,也不能证明 AI 会引用你。

做这个工具的原因是验收现场的一句话:“我们已经允许 AI 了。”这句话无法验证:同一份文件对不同 bot 可以给出相反结论;`Allow` 不一定优先;没有 robots.txt 也不是“明确放行”。把这三件事变成逐行可复核的判定,比多写一段解释有用。

三句话说完规则

1. 先定组:User-agent 与爬虫名前缀匹配,最长者胜,没有才用 *。
2. 再定规则:命中的路径最长者胜,等长时 Allow 胜。
3. 什么都不命中 = 允许;整个文件不存在 = absent,不等于“明确放行”。

工具:粘贴 → 输入路径 → 看五个 bot

正在计算…

爬虫判定命中的组生效规则行号

说明:判定只针对上面这一个路径;同一站点不同路径、不同 bot 可以完全不同。

把示例里的路径换成 /download/public/manual.pdf,会看到 * 组从“不允许”变成“允许”:命中的是更长的 Allow: /download/public/。再把 UA 换成 GPTBot/1.2,结论会重新变成不允许——因为它的专属组把整站挡掉了,而专属组优先于 *。

判定是怎么算出来的

步骤规则容易搞错的地方
1 选组把爬虫名(如 GPTBot/1.2)取出 product token,与每个 User-agent 值做大小写不敏感的前缀匹配,取最长的那个组;没有具体组才用 *“写了 * 就管所有 bot”只在没有更具体组时成立;GPTBot 组对 ClaudeBot 无效
2 选规则在该组内找命中路径的 Allow/Disallow,路径最长者胜;长度相同时 Allow 胜不是“后写的覆盖先写的”,也不是“Allow 一定优先”
3 无命中该组没有规则命中 → 允许“只有 Allow 行”不会顺带屏蔽其他路径
4 无组没有具体组也没有 * → 不限制与“有 * 且全允许”在结果上一样,但证据不同
5 空值Disallow: 空值 → 不限制;整份文件为空 → absent空值规则常被误当成“全部禁止”

通配符:* 匹配任意字符序列;行尾 $ 表示路径必须在此结束。所以 /*.php$ 不会命中 /a.php?x=1。

五种常见写法的实际含义

写法实际含义验收时该记什么
User-agent: *
Allow: /
对所有未单独声明的爬虫不设限allowed(通配)
User-agent: *
Disallow: /
所有未单独声明的爬虫全站不可抓disallowed(通配)
Disallow: /admin/
Allow: /admin/public
后台整体屏蔽,只放行指定子路径按路径分别判定,别只测首页
User-agent: GPTBot
Disallow: /
只挡 GPTBot,其余走 * 或默认写清 bot 名与结论,不写“已允许 AI”
没有 robots.txt没有声明;通行做法视为不限制absent,并确认是有意还是遗漏

为什么这件事值得逐行核

在我们 2026 年 11 月的 30 家装备制造企业官网扫描 中,25 个可判定首页里,17 个对五个 bot 全部放行、1 个全部屏蔽、7 个没有 robots.txt;另有 4 个首页未能识别、1 个 robots.txt 返回 502。样本不是随机抽样,不能外推行业总体,但它说明一件事:“有 robots.txt”与“政策清楚”不是一回事,而 absent 和 disallowed 在验收表里必须分开记。

同一批站点里,还出现过“首页放行、产品路径全屏蔽”的情况(见 15 个产品入口页 pilot)。只测首页会把这种差异整个漏掉。把路径作为必填项,是这个工具刻意做的取舍。

五个常见坑

  1. 以为 Allow 能“打开”别的 bot。 Allow 只在本组内与 Disallow 比长度;它不会让一个被专属组挡住的 bot 重新进来。
  2. 以为顺序决定结果。 规则按路径长度比较,不按出现顺序。把 Allow 挪到前面不会改变结论。
  3. 把 sitemap 当规则。 Sitemap 只是指路,不参与放行判定;删掉它不会“解开屏蔽”。
  4. 把 absent 写成 allow。 没有文件时抓取侧通常按不限制处理,但这是默认值,不是站点的明示许可。
  5. 忘了查询串和 $。 带参数的 URL 与不带参数的是不同路径;$ 的有无会改变命中结果。

边界与局限

  • 不抓站:工具只处理你粘贴的文本,不会去取线上 robots.txt;要验证线上状态,仍需自行抓取并保留时间、UA 与原文。
  • 不是爬虫:它按 RFC 9309 的文本规则判定,不模拟各厂商的完整实现细节(例如某些产品的额外 UA 别名)。
  • 不做编码归一:路径与规则按字面比较;%20 与空格视为不同。RFC 要求双方都先做百分号编码,实际站点多数也是一致写法。
  • 不预测引用:放行只表示“允许抓取”,是否入库、是否被引用由各产品策略决定,本工具不作承诺。
  • 不替代验收:条款、证据与复测范围见 12 条验收条款模板;逐项打分见 20 项自测表。

测试与复算

匹配逻辑在 js/robots-matcher.js,无依赖、不联网;scripts/test_robots_matcher.js 覆盖 30 组断言,包括组选择、最长匹配、等长时 Allow 优先、* 与 $、空值规则、BOM/CRLF、重复 * 组合并、路径大小写与编码差异。运行方式:

node scripts/test_robots_matcher.js

页面上的判定与测试调用的是同一份函数,不存在“文章里一套、工具里一套”的分叉。

数据来源与口径

  1. RFC 9309《Robots Exclusion Protocol》,第 2.2 节群组与规则匹配:rfc-editor.org。
  2. Google Search Central《How Google interprets the robots.txt specification》:developers.google.com。
  3. 本工具引用的样本观察:30 家装备企业官网 AI 爬虫政策扫描;15 个产品入口页 pilot。
关于作者

凌壹信息Official(交付团队),负责企业网站、品牌与智能制造项目的需求梳理、方案与验收协作。本文为规则实现与项目方法整理;判定结果只描述所粘贴文本在该路径上的含义,不构成对抓取、收录、引用或排名的承诺。

把 robots 政策变成可交付项

带着现有 robots.txt 与页面清单,我们把五个 bot 的结论、路径范围和证据形式写进验收表。

预约 robots 政策梳理