给 AI 爬虫单独开白名单,近三成网站反而放行了搜索页和账户页

2026/10/31
给 AI 爬虫单独开白名单,近三成网站反而放行了搜索页和账户页

AI Summary (BLUF)

一项针对5,539个robots.txt文件的分析发现,29.8%的文件在为AI爬虫单独设置规则时,意外放行了原本对所有人屏蔽的路径,如搜索、账户和API。同时,仅7.1%的网站采取了“屏蔽训练爬虫、保留答案引擎”的策略。文章解释了robots.txt的匹配规则,并给出了修复建议。

核心洞察

这份研究最有意思的地方在于,它揭穿了一个很多人没意识到的技术细节:你在 robots.txt 里给 GPTBot 单独开一个“欢迎光临”的组,反而会让它绕过你给所有其他爬虫设的封锁线。29.8% 的网站踩了这个坑,而且被放行的恰恰是搜索页、账户页、API 这些最不该开放的地方。如果你只关心一件事:去检查一下你的 robots.txt 里有没有那个只有 Allow: / 的 AI 爬虫组。

核心结论

  1. 29.8% 的 robots.txt 文件存在“点名放行”缺口:这些文件在为所有爬虫封锁路径的同时,又单独为某个 AI 爬虫建立了组,导致该爬虫至少绕过了一道封锁(1105 个文件中有 329 个)。

  2. 被放行的恰恰是最不该开放的路径:站内搜索结果(155 个文件,47.1%)、登录和账户页(136 个,41.3%)、API 接口(92 个,28.0%)、后台管理区(79 个,24.0%)、购物车和结账页(70 个,21.3%)。

  3. GPTBot 是最常被放行绕过的爬虫(187 个文件),其次是 OAI-SearchBot(179 个)、ChatGPT-User(178 个)、PerplexityBot(150 个)和 ClaudeBot(139 个)。

  4. 仅 7.1% 的网站实现了“封锁训练爬虫、对所有答案引擎开放”的策略:在 1106 个至少封锁一个训练爬虫的文件中,64.6% 同时也封锁了至少一个答案引擎。

  5. llms.txt 采用率仍低:6082 个有响应的网站中仅 14.4%(878 个)提供了有效的 llms.txt;2.7% 的 robots.txt 带有 Cloudflare 的 Content-Signal 行。

主要发现

  • 29.8% 的 robots.txt 文件在为所有爬虫封锁路径的同时又点名了某个 AI 爬虫,结果让这个爬虫至少绕过了一道封锁(1105 个文件里有 329 个)。其中 182 个文件里,该爬虫的组只写了一句话:要么是笼统的 Allow: /,要么是空的 Disallow:。
  • 最常被放行的路径:站内搜索(155 个文件)、登录和账户页(136 个)、API(92 个)、后台管理区(79 个)、购物车和结账页(70 个)。
  • 最常被放行的爬虫:GPTBot(187 个)、OAI-SearchBot(179 个)、ChatGPT-User(178 个)、PerplexityBot(150 个)、ClaudeBot(139 个)。
  • 23.2% 的 robots.txt 文件至少点名了一个 AI 爬虫。GPTBot 被 14.8% 的网站整站封锁(前 1000 名域名里是 21.6%);CCBot(15.3%)和 Bytespider(15.1%)被封锁得最多。
  • 20.0% 的网站至少封锁了一个训练爬虫,但只有 7.1% 在封锁训练爬虫的同时对全部 9 个 AI 答案引擎保持开放。
  • 有响应的网站里,14.4% 提供了有效的 llms.txt;2.7% 的 robots.txt 带有 Cloudflare 的 Content-Signal 行。
  • WordPress 网站点名 AI 爬虫的比例低于其他网站(16.9% 对 22.0%)。

背后的规则

robots.txt 是一组一组的规则。每个组以一行或多行 User-agent 开头,后面跟着给这些爬虫的规则。按照标准 RFC 9309,爬虫会先找点名自己的组。只有找不到的时候才会回退:

“如果不存在匹配的组,爬虫必须遵守 user-agent 行为 * 的组(如果存在的话)。”
RFC 9309,第 2.2.1 节

Google 对自己爬虫的文档也是这么说的:针对特定 user agent 的组和全局 * 组不会合并。所以,一个文件只要添加了 GPTBot 的组,哪怕里面只写了 Allow: / 表示欢迎,GPTBot 就不再读取 User-agent: * 下面写的任何规则。

图 1:一个文件,两种读法

robots.txt 原文:

User-agent: *
Disallow: /search
Disallow: /account/
Disallow: /api/

User-agent: GPTBot
Allow: /

各爬虫实际能抓什么:

路径 其他所有爬虫(如 Googlebot) GPTBot(有自己的组)
/search?q=… 封锁 放行
/account/settings 封锁 放行
/api/v2/orders 封锁 放行
/blog/any-post 放行 放行

高亮行:文件为所有人封锁、却唯独对点名爬虫放行的路径。

两种修法

  • 如果这个组只是为了欢迎爬虫(里面除了 Allow: / 什么都没有),删掉它。爬虫会回退到 User-agent: *,跟其他爬虫遵守同样的规则。
  • 如果爬虫确实需要自己的规则,把 User-agent: * 下的每一条 Disallow 都复制进它的组里:
User-agent: GPTBot
Disallow: /search
Disallow: /account/
Disallow: /api/

我们的免费 robots.txt 检查工具能帮你找出这个问题:粘贴一个文件,它会列出所有被点名爬虫能到达、但 User-agent: * 封锁了的路径。

统计口径:当一个路径在 User-agent: * 下被封锁,而某个被点名的 AI 爬虫自己的组对该路径完全没有规则、或者只有笼统的 Allow: / 时,我们算这个文件存在缺口。如果组里是有意放行某个具体路径(比如 Allow: /api/public/),我们不算。在 * 下封锁整站、同时放行点名爬虫,是一种常见的刻意做法,所以单独的 Disallow: / 也不算。

被放行了什么

这些路径都不是秘密,robots.txt 是公开的,它也不是访问控制。但这些是站主有意封锁的路径:会产生大量近似重复 URL 的搜索结果页、账户页,以及每次请求都要花钱的接口。

图 2:被放行的路径类型

占 329 个有缺口文件的比例。一个文件可以同时计入多个类型。

路径类型 占文件比例 文件数
站内搜索结果 47.1% 155
登录、账户和注册页 41.3% 136
API 接口 28.0% 92
后台管理区 24.0% 79
购物车、结账和订单 21.3% 70
Feed 和 XML 文件 13.4% 44

按被封锁路径中的模式归类(search、?s=、login、account、/api/、admin、cart、checkout、feed 等),所以类型划分是近似的。

最常见的形态是只允许一切的组,也就是笼统的 Allow: / 或空的 Disallow::329 个文件里有 182 个(55.3%)。另外 147 个给了爬虫自己的规则,但漏掉了某些对其他所有人封锁的路径。

图 3:被放行绕过封锁的爬虫

329 个有缺口文件中,各爬虫被放行的文件数。20 个中的前 10。

爬虫 文件数 运营方
GPTBot 187 OpenAI
OAI-SearchBot 179 OpenAI
ChatGPT-User 178 OpenAI
PerplexityBot 150 Perplexity
ClaudeBot 139 Anthropic
Google-Extended 137 Google
CCBot 84 Common Crawl
Amazonbot 65 Amazon
Claude-SearchBot 64 Anthropic
Claude-User 63 Anthropic

Google-Extended 是一个权限令牌,不是爬虫:Google 用 Googlebot 抓取,而 Googlebot 仍然遵守自己的组。对它来说,缺口是规则上的缺口,不一定是实际抓取上的缺口。

谁封锁了哪个 AI 爬虫

在我们能解析的 5539 个 robots.txt 文件中,各爬虫被整站封锁的比例,也就是对 / 的判定结果。这包括在 User-agent: * 下封锁所有爬虫的文件:有 238 个(4.3%)这么做。前 1000 名域名封锁得比后面多:21.6% 封锁 GPTBot,而 1001 到 10000 名是 14.1%。

图 4:按爬虫看整站封锁比例

占可解析 robots.txt 文件的比例:全部 5539 个、前 1000 名(495 个文件)和 1001 到 10000 名(5044 个)。

爬虫 用途 封锁 · 全部 前 1000 1001–10000
CCBot(Common Crawl) 训练 15.3% 23.8% 14.5%
Bytespider(字节跳动) 训练 15.1% 24.8% 14.2%
GPTBot(OpenAI) 训练 14.8% 21.6% 14.1%
ClaudeBot(Anthropic) 训练 13.8% 21.4% 13.0%
Google-Extended(Google) 训练 12.1% 19.0% 11.4%
meta-externalagent(Meta) 训练 12.1% 20.0% 11.3%
Applebot-Extended(Apple) 训练 11.6% 18.2% 10.9%
Amazonbot(Amazon) 训练 11.4% 16.8% 10.9%
PerplexityBot(Perplexity) 答案引擎 11.0% 18.4% 10.3%
ChatGPT-User(OpenAI) 答案引擎 9.5% 14.9% 9.0%
DuckAssistBot(DuckDuckGo) 答案引擎 8.3% 14.5% 7.7%
meta-externalfetcher(Meta) 其他 8.2% 13.9% 7.7%
Perplexity-User(Perplexity) 答案引擎 8.1% 15.8% 7.3%
OAI-SearchBot(OpenAI) 答案引擎 8.0% 12.9% 7.5%
Claude-User(Anthropic) 答案引擎 7.8% 15.2% 7.0%
Claude-SearchBot(Anthropic) 答案引擎 7.6% 14.3% 6.9%
Google-CloudVertexBot(Google) 其他 7.5% 15.2% 6.7%
Amzn-SearchBot(Amazon) 答案引擎 5.7% 10.5% 5.2%
Amzn-User(Amazon) 答案引擎 5.6% 10.1% 5.2%
OAI-AdsBot(OpenAI) 其他 4.4% 9.1% 4.0%

用途分类来自各厂商文档:训练爬虫收集页面用于构建模型;答案引擎抓取页面来回答问题,可以引用和链接你;其他包括广告检查之类的抓取器。Perplexity 表示 Perplexity-User 一般会忽略 robots.txt,因为是用户要求访问该页面,所以封锁它只是表达一个它不会执行的偏好。

封锁训练、保留回答:7.1%

一个常见的建议是把决策拆开:拒绝 GPTBot、CCBot 这类只拿不给的训练爬虫,允许 OAI-SearchBot、PerplexityBot 这类能引用和链接你的答案引擎。这么做的人很少。在 1106 个至少封锁了一个训练爬虫的文件里,714 个(64.6%)同时也封锁了至少一个答案引擎。只有 392 个(占全部文件的 7.1%)在封锁训练爬虫的同时对全部 9 个答案引擎保持开放。

图 5:训练爬虫对答案引擎

占 5539 个可解析 robots.txt 文件的比例。封锁指整站封锁。

模式 占文件比例 文件数
至少封锁一个训练爬虫 20.0% 1106
至少封锁一个答案引擎 13.1% 727
封锁训练、对所有答案引擎开放 7.1% 392
全部 20 个都封锁 3.5% 194

8 个训练爬虫、9 个答案引擎、3 个其他。全部 20 个都点名封锁的情况几乎没有:194 个全部封锁的文件里有 193 个是通过封锁所有爬虫实现的。

llms.txt 和 Content Signals

llms.txt 于 2024 年 9 月提出,是放在网站根目录的一个 Markdown 文件,给语言模型提供一份摘要和关键页面列表。它唯一必需的要素是一行 # 标题。在我们请求的 6082 个有响应的网站里,878 个(14.4%)提供了有效的文件:状态码 200、是纯文本而不是网页、以标题行开头。前 1000 名域名稍微领先:18.5%,而 1001 到 10000 名是 14.0%。

图 6:/llms.txt 返回了什么

占 6082 个有响应网站的比例。不含 403、429、5xx 和网络错误。

响应 占网站比例 网站数
无文件(404 或 410) 70.6% 4296
有效 llms.txt 14.4% 878
返回的是 HTML 页面而非文件 6.7% 409
重定向到其他页面 4.3% 264
纯文本但没有 # 标题行 2.3% 142
其他响应 1.5% 93

Content Signals 由 Cloudflare 于 2025 年 9 月发布,在 robots.txt 里加一行 Content-Signal,包含三个是或否的偏好:search、ai-input 和 ai-train。5539 个文件里有 150 个(2.7%)带了这一行,其中 90 个写了 ai-train=no。这一行只是表达偏好,不属于 RFC 9309,爬虫没有义务读取它。

WordPress 网站

我们通过首页 HTML 识别出 396 个 WordPress 网站。其中 41.3% 的 robots.txt 仍然包含 WordPress 的默认规则(Disallow: /wp-admin/ 和 Allow: /wp-admin/admin-ajax.php)。它们点名 AI 爬虫的频率低于其他网站,封锁 GPTBot 的比例则差不多。

图 7:WordPress 与其他网站

首页可读取的网站(不是机器人验证页)。robots.txt 各行使用可解析的文件。

WordPress 其他网站
网站数 396 4894
可解析 robots.txt 361 3959
至少点名一个 AI 爬虫 16.9% 22.0%
整站封锁 GPTBot 10.0% 10.5%
至少封锁一个训练爬虫 12.5% 15.1%
提供有效 llms.txt 16.6% 14.7%

WordPress 的判定依据:generator 标签、api.w.org 链接,或者首页 HTML 里同时有 wp-content 和 wp-includes 路径。有 22 个网站 robots.txt 里有 WordPress 规则但首页没有痕迹,两列都不计入。在这个排名段里 WordPress 不常见(可读首页的 7.5%),所以样本偏小。

检查你自己的文件

把你的 robots.txt 粘贴到我们的免费检查工具里。它会显示 Googlebot、Bingbot 和 20 个 AI 爬虫能抓什么,并列出所有被点名爬虫能到达、但 User-agent: * 封锁了的路径。它在你的浏览器里运行,不上传任何东西。

打开 robots.txt 检查工具

要写新文件?同一页面上的生成器会把你写的规则复制进它添加的每个爬虫组,所以不会有缺口。

用 WordPress?我们的免费插件 AI Crawler Check 会在后台检查你线上的 robots.txt 有没有这些缺口,并在站点健康里标出来。它只读文件,从不修改。

常见问题

User-agent: * 对 GPTBot 适用吗?

只有当文件里没有任何组点名 GPTBot 时才适用。一旦有组以 User-agent: GPTBot 开头,GPTBot 就只遵守那个组,忽略 User-agent: * 下的所有规则。在前 10000 名域名里,29.8% 的 robots.txt 文件在为所有人封锁路径的同时点名了 AI 爬虫,结果让某个被点名的爬虫至少绕过了一道封锁。

有多少网站封锁 GPTBot?

前 10000 名域名里,我们能读取的 5539 个 robots.txt 文件中有 14.8% 整站封锁 GPTBot:11.4% 是点名封锁,其余是封锁所有爬虫。前 1000 名域名里这个比例是 21.6%。

怎么封锁 AI 训练但允许 AI 搜索?

给每个你想拒绝的训练爬虫(比如 GPTBot、ClaudeBot、CCBot 和 Google-Extended)单独建一个组,写 Disallow: /。答案引擎比如 OAI-SearchBot、Claude-SearchBot 和 PerplexityBot 不要写进文件,让它们遵守 User-agent: *;或者给每个建一个组,把 User-agent: * 下的每条规则都复制进去。这项研究里只有 7.1% 的网站封锁训练的同时对所有答案引擎开放。

有多少网站有 llms.txt 文件?

有响应的网站里 14.4% 提供了有效的 llms.txt(6082 个里的 878 个)。前 1000 名域名里是 18.5%。

robots.txt 足以挡住 AI 爬虫吗?

不够。robots.txt 只是一个请求。守规矩的爬虫会遵守,不守规矩的不会,还有些代表用户行动的抓取器说自己不适用它,Perplexity 就说 Perplexity-User 是这样。任何必须保密的东西都需要登录或服务端规则。

方法

  • 域名: Tranco 榜单的前 10000 条,这是一个为研究构建的流行域名排名(列表 4672X,生成于 2026-10-11)。
  • 时间: 2026-10-12 一次抓取,07:35 到 09:34 UTC。
  • 爬虫: HitMindBot,user agent 为 Mozilla/5.0 (compatible; HitMindBot/1.0; +https://hitmind.ai/bot)。每个域名最多三次请求,依次进行:/robots.txt,然后 /llms.txt(前 64 KB),然后首页(前 256 KB,仅用于检测 WordPress)。我们遵守每个网站给 HitMindBot 的规则,没点名我们时遵守 User-agent: *,跳过了它们禁止的内容(llms.txt 有 270 个网站)。robots.txt 返回服务器错误或没有响应时,我们按 RFC 9309 的规定,把该网站视为完全禁止,不再抓取其他内容。
  • 文件大小: robots.txt 最多读取 500 KiB,这是 Google 采用的限制。10 个超过 100 KB 的文件按前 100 KB 分析。
  • 规则: RFC 9309 的组选择和最长匹配优先(平局时 Allow 胜出),支持 * 和 $ 通配符,与我们公开的 robots.txt 检查工具使用同一套代码。封锁指规则对该爬虫禁止 /。点名指文件里有该爬虫 user agent 的组。
  • AI 爬虫: 我们 robots.txt 生成器里的 20 个 user agent,每个都附有厂商文档,按内容用途分组(8 个训练、9 个答案引擎、3 个其他)。
  • llms.txt 有效的判定:返回 200、不是 HTML 页面、没有重定向到其他路径、第一个非空行是 # 标题。
  • 更正,2026 年 10 月 21 日: 本页最初写的是 28.4% 的 robots.txt 文件至少点名了一个 AI 爬虫。我们的分析在文件既没有该爬虫的组、也没有 User-agent: * 组时,也把爬虫算作被点名。更正后的比例是 23.2%;WordPress 对比和 CSV 里各爬虫的“点名”计数也因同样原因变了。封锁数字没有变,继承缺口的结果也没有变。

10000 个域名对 /robots.txt 的返回情况

返回情况 数量 占比
提供了可解析的 robots.txt 5539 55.4%
403 Forbidden 1208 12.1%
503 Service Unavailable 920 9.2%
其他 5xx 或 429 70 0.7%
无文件(404 或 410) 667 6.7%
其他 4xx 61 0.6%
返回 HTML 页面而非 robots.txt 480 4.8%
无响应(DNS、TLS、超时、拒绝) 1054 10.5%
其他 1 0.0%

局限

  • 大约五分之一的域名拒绝了我们。 1208 个对 robots.txt 返回 403,920 个返回 503,多数是机器人防护。它们被排除在所有比例之外。拒绝未知机器人的网站可能也更常拒绝 AI 爬虫,所以封锁比例更可能是偏低而不是偏高。
  • 很多条目不是网站。 流行域名榜单包含 API、CDN、广告和分析主机名,它们不提供页面,这解释了很多完全无响应的域名(1054 个)。
  • 单一地点的一次快照。 少数网站会按地区或 user agent 返回不同文件。
  • 规则,不是行为。 缺口显示的是规则允许什么,不是任何爬虫实际抓了什么,有些缺口可能是有意为之。我们按 RFC 9309 执行,看不到各厂商解析器的实际行为。
  • 权限令牌。 Google-Extended 和 Applebot-Extended 不是爬虫。Google 和 Apple 用 Googlebot 和 Applebot 抓取,所以这两个令牌的缺口在实际中可能什么都不会改变。
  • 近似处理。 路径类型是对路径的模式匹配。WordPress 检测依赖首页,有 1573 个首页是机器人验证页。

数据和引用

下载汇总数据(CSV)。本页每个数字都来自那个文件,附有分母。我们不公布单个网站的结果,正如我们爬虫页面所承诺的。

跑数据的过程中我们发现并修复了自己 robots.txt 检查工具里的四个问题:两个会报告不存在的缺口,两个会让它在异常文件上卡住(一个规则里有 88 个通配符,一个有 12000 行 Disallow)。这里所有数字都用修复后的代码从存储的文件重新算过。

引用格式:

HitMind,“AI crawler access in the top 10,000 sites,” October 2026. https://hitmind.ai/research/ai-crawler-access-2026/

关于数据的问题,或者想要我们没有公布的细分:support@hitmind.ai。

常见问题(FAQ)

为什么给 GPTBot 单独写 Allow: / 反而会放行我封锁的页面?

robots.txt 按组匹配,爬虫只读点名自己的组,找不到才回退到 *。一旦为 GPTBot 建组,哪怕只写 Allow: /,它就不再读 User-agent: * 下的 Disallow,搜索、账户、API 等路径因此被放行。

robots.txt 里 AI 爬虫组意外放行了哪些路径?

研究显示,329 个有缺口的文件中,最常被放行的是站内搜索(47.1%)、登录和账户页(41.3%)、API(28.0%)、后台管理区(24.0%)、购物车和结账页(21.3%)。

怎么修复 robots.txt 里 AI 爬虫绕过封锁的问题?

两种修法:若该组只为欢迎爬虫、内容只有 Allow: /,直接删掉,让它回退到 *;若爬虫确实需要单独规则,就把 User-agent: * 下每条 Disallow 原样复制进它的组里。

晓婷深圳
本文由 晓婷 审核,最后更新于 2026年10月31日
联系编辑 →
← 返回文章列表
分享到:微博

版权与免责声明:本文仅用于信息分享与交流,不构成任何形式的法律、投资、医疗或其他专业建议,也不构成对任何结果的承诺或保证。

文中提及的商标、品牌、Logo、产品名称及相关图片/素材,其权利归各自合法权利人所有。本站内容可能基于公开资料整理,亦可能使用 AI 辅助生成或润色;我们尽力确保准确与合规,但不保证完整性、时效性与适用性,请读者自行甄别并以官方信息为准。

若本文内容或素材涉嫌侵权、隐私不当或存在错误,请相关权利人/当事人联系本站,我们将及时核实并采取删除、修正或下架等处理措施。也请勿在评论或联系信息中提交身份证号、手机号、住址等个人敏感信息。