学习

4,762 个头部网站的 robots.txt 错误与新指令

爬虫看不懂的 robots.txt 行会被一声不响地跳过。我们解析了 4,762 个热门网站的 robots.txt,统计那些不起作用的行,以及网站开始添加的新 AI 指令。

一个 robots.txt 文件,其中一条规则被红线划掉,这类行会被爬虫忽略
研究

主要发现

robots.txt 文件中出现的指令4,762 个文件中含有各指令的占比,2026年10月28日
User-agent97.4%
Disallow89.6%
Sitemap70.9%
Allow56.0%
Crawl-delay12.2%
Host4.8%
Content-Signal4.7%
Clean-param3.2%
Noindex0.5%

不起作用的行

robots.txt 标准 RFC 9309 定义了 user-agent、allow 和 disallow。Google 增加了 sitemap,并表示 “other fields such as crawl-delay aren’t supported”,除此以外的规则会被其解析器忽略(Google Search Central)。我们的解析器遵循 RFC,同时也接受广泛使用的 crawl-delay、host 和 clean-param。撇开 Content-Signal,它跳过的内容如下:

问题文件数占比爬虫的做法
未知指令1082.3%跳过该行
不以 / 开头的路径440.9%可能忽略该规则
没有冒号的行270.6%跳过该行
出现在任何 User-agent 之前的规则60.1%规则不属于任何组,所以没人遵守

未知指令记录了那些从未成为标准的想法。除 Content-Signal 外,最常见的是 Noindex(24 个文件),LLMs、LLM-policy 和 Agentmap 之类与 AI 相关的自创指令(分别为 10、8 和 8 个文件),以及老旧的 Request-rate 和 Visit-time。在 robots.txt 里写一行指向你的 llms.txt 并无害处,但据我们所知没有爬虫会在那里读取它。

没有冒号的行通常完全是别的东西:在 6 个文件中,网页的 HTML 或 CSS 跑进了 robots.txt。

Content-Signal:一行关于 AI 用途的新声明

Cloudflare 的 Content Signals 在 robots.txt 中加入一行,说明网站内容可以用于什么:search(建立搜索索引并返回链接和简短摘录)、ai-input(在回答时把内容提供给模型,例如检索或 grounding)以及 ai-train(训练或微调模型)。Cloudflare 明确说这些只是偏好,爬虫可以忽略。我们的样本中:

信号设为 yes设为 no未说明
search22301
ai-input10710107
ai-train621611

这个模式与网站对爬虫规则的做法一致:对搜索说 yes,对训练说 no,对 AI 回答大多说 yes 或什么也不说。224 个网站中只有 10 个拒绝 ai-input,也就是涉及在 AI 回答中被引用的那个信号。我们的解析器像任何尚未采用它的爬虫一样,把这一行视为未知;我们没有把它计入上面的错误统计。

清理你自己的文件

  1. 删除 Noindex 以及 Google 列为不支持的其他内容。要让页面不出现在结果中,请在页面上使用 noindex 元标签,并让爬虫能抓取页面,这样它们才能看到这个标签。
  2. 让每个路径都以 / 开头,并把每条规则放在一行 User-agent 之下。
  3. 抓取线上文件,确认它是纯文本,而不是你的首页。
  4. 检查每个 AI 爬虫被允许做什么,用 AI 爬虫检查器,它会列出它忽略的每一行及原因。关于爬虫本身,见哪些网站屏蔽 AI 爬虫。

方法与局限

我们选取了 Tranco 列表 GQ3LK 的前 10,000 个域名(这是一个研究用排名,综合了 Chrome UX Report、Cloudflare Radar、Cisco Umbrella、Majestic 和 Farsight 在 2026年9月28日至10月27日的数据)。2026年10月28日,我们的爬虫通过 HTTPS 请求每个域名的首页,并跟随重定向。许多 Tranco 条目是没有网站的 CDN、API 或跟踪域名:2,155 个完全没有 HTTP 响应,1,415 个返回 403。我们保留了首页返回状态 200 HTML 页面的 5,480 个域名,按重定向后的最终主机名各计一次。其中 4,762 个提供了可解析的 robots.txt;其大小中位数为 600 字节。

文件用我们 AI 爬虫检查器背后的 RFC 9309 解析器解析,它会报告爬虫会跳过的每一行。指令统计是去除注释后至少包含该字段一次的文件占比。其他解析器在某些地方更宽松(Google 的解析器和我们的一样会接受一些拼写错误),所以被标出的行是严格读取器会忽略的行,而不是所有爬虫都会忽略的证明。我们的爬虫自称 Mentioned-Research/1.0。在防火墙层拒绝未知机器人的网站不在样本中,而这些网站很可能对 AI 爬虫也更严格,所以请把这里的每个屏蔽率看作下限,而不是对整个网络的估计。

引用本文

欢迎引用这些数据并制作图表,请附上指向本页的链接。建议引用格式:Mentioned, “robots.txt Mistakes and New Directives in 4,762 Top Sites,” 2026年10月28日, https://mentioned.at/learn/robots-txt-errors。数据和文本以 CC BY 4.0 发布。

问题

Google 支持 robots.txt 中的 Crawl-delay 吗?

不支持。Google 的 robots.txt 文档说,user-agent、allow、disallow 和 sitemap 以外的字段(例如 crawl-delay)不受支持。Anthropic 表示其爬虫会遵守 Crawl-delay。

robots.txt 中的 Content-Signal 是什么?

Cloudflare 提出的一行声明,说明网站内容可以如何使用:search、ai-input(用于 AI 回答)和 ai-train。在我们 2026年10月的抓取中,4.7% 的头部网站 robots.txt 含有这一行。

Noindex 在 robots.txt 中有效吗?

对 Google 无效,它的解析器会忽略 allow、disallow 和 user-agent 以外的规则。请改为在页面上使用 noindex robots 元标签或 X-Robots-Tag 标头。

免费检查一次