很多站点的 robots.txt 里,关于 AI 爬虫的那几行是跟风写上去的。有人看到新闻说 AI 公司拿网页训练模型,就把能想到的 AI 爬虫全部屏蔽;也有人听说要做 GEO,就一行 Allow 放行所有。

两种做法都没算过账。允许和屏蔽各有代价,而且代价落在不同的地方。

robots.txt 能管住 AI 爬虫到什么程度

先说清楚这个文件的性质。robots.txt 的规则在2022年成为 IETF 标准,编号 RFC 9309。标准原文写明,这些规则不是一种访问授权,不能当作安全措施。它是一份请求,守规矩的爬虫会照做,不守规矩的不会。

标准里有几条细节,和 AI 爬虫设置直接相关。爬虫缓存 robots.txt 的时间一般不应超过24小时,所以改完不会立刻生效。爬虫至少要能解析500 KiB 的内容。最容易出事的是状态码:robots.txt 返回4xx时,爬虫可以访问站点上的任何资源;返回5xx时,爬虫必须假定整个站点都被禁止。

也就是说,一台时不时报500错误的服务器,会在那段时间里对所有守规矩的爬虫关上大门,而站长自己毫不知情。

24小时robots.txt 缓存一般不应超过的时长RFC 9309
约24小时OpenAI 系统根据 robots.txt 更新作出调整所需时间OpenAI 官方文档
14000个Consent in Crisis 研究审计的网站域名数Longpre 等 2024

同一家厂商,不止一个 AI 爬虫

AI 爬虫不是一个东西。同一家厂商往往有几种爬虫,分别服务于训练、检索和用户触发的访问,屏蔽哪一个,后果完全不同。下表只列有官方文档可查的几个。

标识所属官方说明的用途屏蔽后的影响
GPTBotOpenAI抓取可能用于训练基础模型的内容内容不进入训练,不影响在 ChatGPT 搜索中出现
OAI-SearchBotOpenAI在 ChatGPT 的搜索功能中展示网站不会出现在 ChatGPT 搜索答案中,仍可能以导航链接出现
ChatGPT-UserOpenAI用户在对话中触发的网页访问官方说明由用户发起,robots.txt 规则可能不适用
Google-ExtendedGoogle控制内容能否用于训练 Gemini 模型不影响网站在 Google 搜索中的收录和排名
Baiduspider百度百度搜索的抓取程序可能在百度搜索中得不到收录和展现

OpenAI 的文档写得很明确:这几项设置彼此独立,站点可以放行 OAI-SearchBot 以出现在搜索结果里,同时禁止 GPTBot。Google-Extended 则没有独立的 HTTP 请求 UA,抓取仍由 Google 已有的爬虫完成,它只是 robots.txt 里的一个控制标记。

国内平台的情况要单独说。截至写作时,我们在豆包、通义千问、腾讯元宝、Kimi、DeepSeek 的官方渠道里,没有找到像 OpenAI 那样逐个列出爬虫标识和用途的公开文档。百度有百度蜘蛛的官方说明,但没有把服务于文心一言的抓取单独拆出一个标识。

这意味着在国内平台上,做不到「只屏蔽训练、保留检索」这种精细设置。屏蔽百度蜘蛛,失去的是百度搜索的收录,而不仅仅是某一种 AI 用途。

屏蔽 AI 爬虫的影响:训练和检索要分开算

屏蔽训练类爬虫的站点越来越多。Longpre 等人在 NeurIPS 2024 发表的研究审计了约14000个 AI 训练语料背后的网站域名,发现在2023到2024这一年里,来自网站自身的数据限制急剧增加,C4 语料中最活跃维护的关键来源有28%以上被完全限制使用;若按服务条款中的抓取限制计算,C4 有45%受到限制。

这组数字说明屏蔽是一种常见选择,并不说明它对每个站点都划算。账要分开算。屏蔽训练爬虫,影响的是未来模型版本里关于这个站点的知识;屏蔽检索爬虫,影响的是现在的 AI 答案能不能实时引用这个站点。对一个希望被 AI 推荐的品牌来说,后者的代价立刻就会出现,前者的代价要等模型换代才看得出来。

内容本身就是产品的站点,比如媒体和数据库,屏蔽训练爬虫有它的道理。以获客为目的的企业官网,多数时候没有理由屏蔽检索类爬虫。

屏蔽之前,先想清楚要防的是什么

决定屏蔽 AI 爬虫的理由,通常是下面三种之一,而 robots.txt 只对其中一种真正有效。

第一种是不希望内容被拿去训练模型。这是 robots.txt 能处理的情况,前提是对方公开了训练爬虫的标识并承诺遵守,比如上表里的 GPTBot 和 Google-Extended。

第二种是担心服务器负载。robots.txt 只是请求,挡不住不守规矩的爬虫,负载问题更可靠的办法是在服务器或 CDN 上按来源限流,并且对百度这类公布了验证方法的爬虫做身份核验后再放行。

第三种是不希望付费内容或内部资料被抓走。这种情况 robots.txt 完全帮不上忙,RFC 9309 已经说明它不是访问授权。真正需要保护的内容,应当放在登录或权限控制之后。

把三种理由分开,常常会发现要写进 robots.txt 的规则比原先想的少得多。

允许 AI 爬虫之后,为什么还是抓不到

robots.txt 里放行,是必要条件而不是充分条件。常见的拦截发生在别处:CDN 的机器人防护规则、防火墙的默认策略、针对陌生 UA 的限流。它们在浏览器里完全看不出来,因为浏览器用的是正常的 UA。

判断的办法只有一个,就是用各家爬虫的 UA 实际发起请求,记录返回的状态码。我们的官网 AI 可读性体检第一步做的就是这件事,读一遍 robots.txt 不算测试。

还有一个不讨好的事实:状态码正常,也不代表爬虫看到了内容。页面主体要是得靠 JavaScript 才渲染出来,爬虫拿到的可能是一个空壳。放行只解决了能不能进门,进门之后能读到什么,是另一项检查。

一份偏保守的设置思路

对以获客为目的的企业官网,比较稳妥的思路是这样的。默认放行所有爬虫,只对后台、搜索结果页、购物车这类没有内容价值的路径写 Disallow。有明确理由不愿内容进入训练的,单独对 GPTBot、Google-Extended 这类有官方说明的训练标记写 Disallow,检索类爬虫保持放行。不要照抄网上流传的国内 AI 爬虫名单,找不到官方说明的标识,写了也无法确认它是否生效。

改完之后等至少一天,再用爬虫 UA 实际请求一次,确认结果和预期一致。

另一个常被忽略的信息源是服务器访问日志。按 UA 把最近一段时间的访问记录筛出来,能看到哪些爬虫真的来过、访问了哪些路径、拿到了什么状态码。日志里从没出现过的爬虫,讨论要不要屏蔽它意义不大;频繁出现却总是拿到403的爬虫,才是最该先查的那一个。

参考来源