谷歌爬虫之外,robots.txt 里还有八个名字要处理

谷歌爬虫你已经认识了,现在 robots.txt 里还有八个名字,其中三个根本不发请求。这里是每个名字挡掉的代价、六条完整 UA 串,和一段可以直接粘的配置。

抓取与收录6 分钟读完1938 次阅读
谷歌爬虫之外,robots.txt 里还有八个名字要处理

你已经认识谷歌爬虫了。现在 robots.txt 里要处理的是另外八个名字,而其中三个根本不发请求——它们是控制令牌,只是写在文件里的一串字,厂商读到它才决定能拿你的内容做什么。分不清这两类,写出来的 robots.txt 会安静地执行成另一件事。

读这篇前

这一篇是「放行」这一簇的入口,管的是该点谁的名、点了各自付什么代价。文件本身的语法、分组怎么写、优先级怎么算,在 robots.txt 怎么写那篇。哪个爬虫喂哪个答案面,在 GPTBot 和 OAI-SearchBot 的区别那篇。

下面所有内容都有一个前提:你的页面取得到,而且交付的 HTML 里真的有正文。对一个交付空壳的页面来说,放行不值钱。

爬虫和控制令牌不是一回事

爬虫会发 HTTP 请求,带着一个 User-Agent 字符串。你能在日志里看见它,能在 CDN 上挡它,能靠反查 DNS 验证它是不是真的。控制令牌什么都不发。它只以「robots.txt 里的一个名字」的形式存在,厂商读到这个名字,来决定它已经用别的代理抓走的内容可以怎么用。

Google 对自家这个令牌写得很直白:Google-Extended doesn't have a separate HTTP request user agent string. Crawling is done with existing Google user agent strings; the robots.txt user-agent token is used in a control capacity.(Google-Extended 没有单独的请求 UA。抓取仍用现有的 Google UA,robots.txt 里的这个 token 只起控制作用。)Apple 对它的对应物说了同一件事:Applebot-Extended does not crawl webpages. Webpages that disallow Applebot-Extended can still be included in search results.(Applebot-Extended 不抓网页。禁止它的网页照样可以出现在搜索结果里。)两句都是 2026-08-18 读自各自的官方文档。

一个从不出现在你访问日志里的名字,在防火墙上挡它没有任何作用。那是你对厂商提的一个请求,不是你关上的一扇门。

所以「在 CDN 上一键屏蔽 AI 抓取」和「在 robots.txt 里禁掉 Google-Extended」不是同一件事的两种做法。前者是丢掉请求,后者是拒绝一项授权。谷歌爬虫这类真爬虫两条路都拦得住,控制令牌只有后一条。

谷歌爬虫之外的八个名字,各自挡掉的代价

下表每一条都来自厂商自己的文档,2026-08-18 读的。版本号会变,斜杠前面那个 token 不会。

名字类型挡掉它的代价
GPTBot爬虫内容不进 OpenAI 的模型训练。不影响搜索露出。
OAI-SearchBot爬虫你不再出现在 ChatGPT 的搜索答案里。
ChatGPT-User用户触发有人让 ChatGPT 打开你这一页时,它打不开。
PerplexityBot爬虫你不再出现在 Perplexity 的搜索结果里。
Perplexity-User用户触发Perplexity 应用户要求打不开你的页面。
ClaudeBot爬虫之后的内容不进 Anthropic 的训练集。
Google-Extended控制令牌内容不用于训练 Gemini。不影响搜索与 AI 概览。
Applebot-Extended控制令牌内容不用于 Apple 的生成式模型。不影响搜索结果。

第三列请当价目表看,不是警告。其中两条的价格,如果你不在乎训练用途,基本等于零;另外三条,代价是从一个正有人在找你这类东西的答案面上消失。

六条完整 UA 串

这些是往日志过滤器里粘的,不是往 robots.txt 里粘的。robots.txt 匹配的是 token,在那里写长串会一条都匹配不上。

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user)

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15 (Applebot/0.1; +http://www.apple.com/go/applebot)

这张单子上少的两个是故意的。Anthropic 的支持页列了 ClaudeBot、Claude-User、Claude-SearchBot 三个名字,也说明了各自干什么,但那一页没有公布完整 UA 串——所以我们不印。Google-Extended 和 Applebot-Extended 根本没有串可印,这正是上一节要说的事。

四步做决定

每个站跑一次,二十分钟,结论能用到你的商业模式变化为止。

  1. 先决定要不要出现在 AI 答案里。如果内容本身就是你的商品、而且在付费墙后面,诚实的答案可能是不要,后面几步的形状就得改。
  2. 面向搜索的代理全部放行:OAI-SearchBot、PerplexityBot,以及两个用户触发的抓取。这几个是会把一条回你站的链接摆到读者面前的。
  3. 训练那一档单独决定:GPTBot、ClaudeBot、Google-Extended、Applebot-Extended。四个全挡,在任何答案面上都不损失什么,也换不回任何可测量的东西。这是一个立场,不是一次优化。
  4. 用请求验证,不要看文件。带上上面每一条 UA 请求你自己的首页,确认拿到 200 且有正文。CDN 能盖过 robots.txt,而通常没人告诉过它你的决定。

🔴 出海站的第四步要多查一层

第四步在国内团队做的出海站上尤其容易翻车,因为链路更长:源站可能在国内、前面套一层国内 CDN 再出海,或者反过来。任何一层上的默认安全规则、机器人管理策略,都可能在 robots.txt 生效之前先把这些 UA 拦掉。

这类拦截的表现很像「没人来抓」:日志里干干净净,你以为放行成功了。分辨方法只有一个——从公网带着上面的 UA 请求一次线上域名,看返回码。403 或者一个验证页,问题就在链路里,不在你的文件里。

顺带一句:这一步别在源站上本地测。本地请求根本不经过那几层,测出来的永远是好的。

交付物:一段可以直接粘的 robots.txt

这段放行全部面向搜索的代理,拒绝全部训练用途。如果你更愿意进训练数据,把那四个 disallow 改成 allow。

User-agent: OAI-SearchBot
Allow: /

User-agent: ChatGPT-User
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Perplexity-User
Allow: /

User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: Applebot-Extended
Disallow: /

Sitemap: https://example.com/sitemap.xml

把最后一行换成你自己的完整地址。别的什么都别加:一个点了名却什么都没改的分组,等于什么都没说,还会让半年后的你更难读懂这个文件。

三种会写错的方式

每一种都会产出一个看起来没问题、行为却和你想的不一样的文件。

  1. 为了不进 ChatGPT 而挡 GPTBot。那是两个代理,OpenAI 文档明写这些设置彼此独立。挡训练爬虫、留搜索爬虫是一个说得通的立场;以为挡一个就等于挡另一个不是。
  2. 点了名就顺手挡掉。我们自己测 30 个站时数过:99 个点名分组里,82% 是整站禁止——点名之后放行反而是更少见的选择。细节在点名一个爬虫通常就等于挡掉它那篇。
  3. 把完整 UA 串当 token 写。robots.txt 是拿产品 token 去做不区分大小写的子串匹配。在 User-agent 行里写一整条 Mozilla 串,匹配不上任何东西,那个分组就静默失效了。

这一章到哪儿为止

放行是许可,不是结果。把上面每一个都放行,不代表它们中的任何一个会来,而这一章告诉不了你它们来没来——那要服务器日志,是另一件事。这些设置也不管「进来之后能摘走多少」,那是摘要指令,完全另一套机制。

厂商文档也会变。这里每一条串、每一句话都是 2026-08-18 读的,token 的稳定性远高于版本号。要拿版本号当长期事实之前,回原文再看一眼。

把这件事在你名下每个站上都过一遍、并且在某条边缘规则开始和文件打架的那天就发现,是 QueryWin 正在做的事。

常见问题

GPTBot 是干什么的

OpenAI 文档说它用来抓取可能进入生成式基础模型训练的内容。它不是决定你出不出现在 ChatGPT 搜索答案里的那个代理——那个是 OAI-SearchBot。

到底该不该放行 AI 爬虫

拆成两个问题。面向搜索的代理会把读者送回来,代价是一次抓取;训练爬虫拿走内容,回报是没有可测量的东西。多数站会想要前者,后者两种立场都站得住。

谷歌爬虫和这八个是什么关系

Googlebot 仍然是那个来抓页面、喂常规索引的爬虫,AI 概览和 AI 模式吃的也是那个索引。这八个里只有 Google-Extended 属于谷歌,而它不抓任何东西,只决定抓回去的内容能不能用于训练。

挡了 Google-Extended,还会出现在 AI 概览里吗

会。它管的是 Gemini 的训练用途。Google 搜索里的 AI 功能吃的是常规索引,能影响它们的是摘要指令,不是这个令牌。

用户触发的那两个遵守 robots.txt 吗

OpenAI 说,因为 ChatGPT-User 的动作是人发起的,robots.txt 规则可能不适用。把这两个当成一项礼节性设置,别当成一把锁。

本文属于 QueryWin 实操手册 · 第 2 阶

谷歌爬虫之外,robots.txt 里还有八个名字要处理