先问准:你要挡的是哪一件事
在 robots.txt 里对 AI 爬虫表态之前,先把问题问准:你要挡的是搜索展示、模型训练,还是用户当次提问时的即时读取?这三个目标对应不同的 token,写错一个位置,很可能挡住的是你不介意的那件事,而真正想限制的那件事没有变化。
三组 token,影响三件不同的事
谷歌这一侧用两个身份理解。Googlebot 是搜索抓取的入口,决定内容能不能被抓去用于 Google 搜索;Google-Extended 是另外的 robots.txt 控制 token,它没有独立的请求 User-Agent,抓取沿用现有标识,token 只起控制作用,管的是内容能否用于训练后续模型以及为 AI 应用提供 grounding。文档给了明确边界:Google-Extended 不影响站点在搜索中的收录,也不是排名信号。想让页面留在搜索里、但不希望被拿去训练,靠的是两个不同的 token。
OpenAI 把两件事分成两个独立设置:允许 OAI-SearchBot 是为了让站点出现在搜索功能的结果里,禁止 GPTBot 表示内容不希望用于训练基础模型。被排除在 OAI-SearchBot 之外,站点不会出现在 ChatGPT 的搜索回答里,但仍可能作为导航链接出现,搜索侧调整大约需要 24 小时。Anthropic 给出三个身份:ClaudeBot 与训练有关,Claude-User 处理用户提问时的页面读取,Claude-SearchBot 用于改善搜索结果质量。Perplexity 这一侧,PerplexityBot 负责在搜索结果中呈现并链接网站,不用于抓取训练内容;Perplexity-User 是用户提问时的即时访问,官方明确提示它通常会忽略 robots.txt。robots.txt 里 AI 爬虫 token 的取舍顺序见这份允许还是禁止 AI 抓取的配置指南,它把搜索索引类与训练类 token 分开处理,适合照着分组核对。
拿真实文件逐行看:旧名字要换成现名
空谈配置不如看一个实际文件。光算官网当前对外提供的 robots.txt 策略是全部允许,包括训练类、索引类和用户触发类爬虫,只保留后台路径不允许抓取。逐行看下来有三点值得注意:默认组只写了允许与后台路径的禁止,没有针对 AI 的通用规则;文件里出现了旧名字,在当前爬虫文档里已不再作为受支持的 token 列出,写旧名字不报错,但不等于按预期生效;如果当初写那些允许的用意是明确表态允许 AI 抓取,名字需要跟着官方文档更新。
匹配规则也要弄对:爬虫找与自身 User-Agent 最匹配的那一组规则,其他组被忽略;路径匹配用最长路径的那条,冲突规则采用限制最少的一条。组写重复、顺序随意、路径写得太宽,实际结果会和以为的相反。
写了 Disallow 不等于对方一定不来
robots.txt 的性质先摆清楚:规则可能不被所有搜索引擎支持,指令无法强制爬虫行为,是否遵守取决于爬虫自己。也不要把 robots.txt 当成从搜索结果里隐藏页面的手段,被拦下的网页 URL 仍可能出现在搜索结果里,只是不带描述。用户触发类的抓取器由用户请求发起,想靠 robots.txt 完全控制用户在 AI 里问一句、系统去读你页面的事,方向就不对,这类访问更适合在服务端按来源与标识组合判断。
要不要写 Crawl-delay,先看谁支持:谷歌只支持 user-agent、allow、disallow、sitemap 四个字段,crawl-delay 不受支持;Anthropic 明确表示支持这个非标准扩展并给出示例。在其他平台文档里没有看到相关说明,不要把它当成跨平台通用频率控制,真要限速用服务器侧的速率限制和网关规则更可靠。实操顺序是:先确认业务目标,按目标给 token 分组,核对名字是否为官方现名,写完取一次实际响应确认,再等生效,同时留意入口层拦截与缓存旧文件。