面向 AI 爬虫的 robots.txt:2026 完全指南
简而言之
2026 年应该如何为 AI 爬虫配置 robots.txt?
应当把 AI 客户端分成三类而不是一类:训练爬虫(GPTBot、ClaudeBot、CCBot、Google-Extended)、检索索引器(OAI-SearchBot、Claude-SearchBot、PerplexityBot)以及用户触发抓取器(ChatGPT-User、Perplexity-User、Gemini-Deep-Research)。前两类采集内容,分别用于模型训练和支撑答案引擎引用来源的检索索引,二者都遵守 robots.txt。第三类只在真实的人提出真实的问题时才发起请求,而且多数运营方都在文档中说明 robots.txt 可能并不适用于它。屏蔽训练类是一项授权决策;屏蔽用户触发抓取器,则等于拒绝回答一位正在咨询的客户。
简短的答案
不要再把“AI 机器人”当成一个整体来看待。它们分为三类,经济逻辑完全不同,而对这三类一视同仁地写上一行 Disallow,几乎总是错误的取舍。
Training
- GPTBot
- ClaudeBot
- Google-Extended
- CCBot
Asking to learn from your catalogue. Declining is a licensing decision, and a defensible one.
Search index
- OAI-SearchBot
- PerplexityBot
- Applebot-Extended
Asking to be able to cite you. Blocking these removes you from answers you would have won.
User-triggered
- ChatGPT-User
- Claude-User
- Perplexity-User
A person with a bill of materials open, mid-decision, right now. This is a customer, not a scraper.
训练爬虫是在请求从你的产品目录中学习。检索索引器是在请求获得引用它的能力。用户触发抓取器则是一位客户,此时此刻,正在询问你的产品。屏蔽第一类是一项授权决策。屏蔽第三类等于直接挂断电话。
Forrester 发现,94% 的企业采购者在最近一次采购过程中使用了 AI。以 AI user-agent 命中你源站的抓取请求中,有相当一部分并不是在扒数据——而是某个人正开着一份物料清单,处在决策中途。你的 robots.txt 应该把它们区分开,而大多数网站并没有做到。
2026 年真正重要的每一个 AI 用户代理
| 令牌 | 运营方 | 类别 | 是否遵守 robots.txt | 来源 IP 验证方式 |
|---|---|---|---|---|
GPTBot | OpenAI | 训练 | 是 | gptbot.json |
OAI-SearchBot | OpenAI | 检索索引 | 是 | searchbot.json |
ChatGPT-User | OpenAI | 用户触发 | “可能不适用” | chatgpt-user.json |
ClaudeBot | Anthropic | 训练 | 是 | bots.json |
Claude-SearchBot | Anthropic | 检索索引 | 是 | bots.json |
Claude-User | Anthropic | 用户触发 | 是 | bots.json |
PerplexityBot | Perplexity | 检索索引 | 是 | perplexitybot.json |
Perplexity-User | Perplexity | 用户触发 | “通常忽略” | perplexity-user.json |
Google-Extended | 训练授权令牌 | 是,作为令牌 | 并非抓取器 | |
Gemini-Deep-Research | 用户触发的研究代理 | 通常忽略 | Google 抓取器 IP 段 | |
Applebot-Extended | Apple | 训练授权令牌 | 是,作为令牌 | 并非抓取器 |
Amazonbot | Amazon | 训练与产品改进 | 是 | Amazon IP 列表 |
Bytespider | ByteDance | 训练 | 有争议 | 未公布 |
CCBot | Common Crawl | 为众多模型供料的批量归档 | 是 | 反向 DNS |
Meta-ExternalAgent | Meta | 训练与索引 | 是 | Meta 官方文档 |
上面这张表里有五点经常被误解或者被漏掉,值得明确说清楚。
`Google-Extended` 和 `Applebot-Extended` 不是爬虫。 这两者都不抓取任何东西。它们是授权令牌:Google-Extended 控制的是 Googlebot 已经抓到的内容能否用于训练 Gemini、以及能否作为其回答的事实依据;Apple 的文档也明确写道,Applebot-Extended“不抓取网页”,而是“仅用于决定如何使用 Applebot user agent 已抓取的数据”。对 Applebot-Extended 设置 Disallow,并不会把你从 Siri、Spotlight 或 Safari 的结果中移除。
在用户触发抓取这件事上,Anthropic 是个例外。 OpenAI 声明,对于 ChatGPT-User,“由于这些动作由用户发起,robots.txt 规则可能并不适用”。Perplexity 表示 Perplexity-User“通常会忽略 robots.txt 规则”。Google 的文档在谈到自家用户触发抓取器时写道:“由于抓取是由用户请求的,这些抓取器通常会忽略 robots.txt 规则”。Amazon 则称 Amzn-User“可能不会遵循全部 robots.txt 指令”。与之相反,Anthropic 在文档中说明其机器人遵守 robots.txt,并点名 Claude-User 是站点所有者可以用来控制用户发起请求的令牌。如果你把这一整组全部 Disallow,真正会停下来的偏偏是 Claude——这与大多数人的本意恰好相反。
Amazon 和 Meta 各自运行着一支分工不同的机队。 除 Amazonbot 之外,Amazon 还记录了 Amzn-SearchBot(用于包括 Alexa 与 Rufus 在内的搜索体验)和 Amzn-User(实时的用户操作),并称这两者都不会为生成式 AI 训练而抓取。Meta 用 Meta-ExternalAgent 做训练与索引,用 Meta-ExternalFetcher 处理用户请求的抓取,后者可能会绕过 robots.txt。
Bytespider 是政策问题,不是 robots.txt 问题。 ByteDance 声称自己尊重 robots.txt;站点运营者却普遍反映情况并非如此。如果你想拦住它,就在边缘拦,别指望这个文件。
关于 `Gemini-Deep-Research` 的一点说明: Google 已公布的爬虫文档尚未把这个令牌列入常见爬虫或用户触发抓取器名单,但它已经在实际使用中,而且主要分销商已经按名称对它做了处理——Digi-Key 的 robots.txt 明确放行了 Google-Extended 和 Gemini-Deep-Research,同时放行的还有 GPTBot、ChatGPT-User、OAI-SearchBot、PerplexityBot、Perplexity-User、ClaudeBot、Claude-User 和 Claude-SearchBot。把它加进去;robots.txt 里出现一个无法识别的令牌是无害的。
屏蔽每一类分别要付出什么代价?
| 如果你屏蔽 | 你会失去 | 你会得到 |
|---|---|---|
| 训练爬虫 | 在未来模型权重中的存在;成为离线状态下的默认答案 | 一个授权立场,以及略微省下的带宽 |
| 检索索引器 | 在 ChatGPT、Claude 和 Perplexity 的回答中被引用 | 对公开产品目录而言,没有任何实质收益 |
| 用户触发抓取器 | 回答一位真实买家问题的能力 | 没有 |
对于产品目录本就公开、并且已经在各聚合平台被镜像的制造商或分销商来说,屏蔽训练类基本上只是象征性动作:数据无论如何都会通过分销商的产品列表和 Common Crawl 抵达模型。真正改变的,是模型手里握着的是谁的那一份数据。而对公开产品目录来说,屏蔽另外两类完全没有任何好处。
可直接复制粘贴的 robots.txt
方案 A:最大化代理可见度
对于产品目录公开、商业利益在于被发现并被准确引用的制造商或分销商,这是正确的默认选择。
# --- Answer engines and user-triggered fetchers ---
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: PerplexityBot
User-agent: Perplexity-User
User-agent: Gemini-Deep-Research
User-agent: Amzn-SearchBot
Disallow: /account/
Disallow: /cart/
Disallow: /checkout/
Allow: /
# --- Training crawlers and permission tokens ---
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: CCBot
User-agent: Meta-ExternalAgent
User-agent: Amazonbot
User-agent: Google-Extended
User-agent: Applebot-Extended
Disallow: /account/
Disallow: /cart/
Disallow: /checkout/
Allow: /
# --- Everything else ---
User-agent: *
Disallow: /account/
Disallow: /cart/
Disallow: /checkout/
Sitemap: https://www.example.com/sitemap.xml
Sitemap: https://www.example.com/sitemap-products.xml方案 B:允许检索,拒绝训练
适用于那些已经明确决定不为模型训练做贡献、但仍希望被发现和被引用的组织。请注意它的代价:对 Google-Extended 设置 Disallow,会让你的内容不仅退出训练,也退出 Gemini 回答的事实依据。
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: PerplexityBot
User-agent: Perplexity-User
User-agent: Gemini-Deep-Research
Allow: /
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: CCBot
User-agent: Bytespider
User-agent: Meta-ExternalAgent
User-agent: Amazonbot
User-agent: Google-Extended
User-agent: Applebot-Extended
Disallow: /
User-agent: *
Disallow: /account/方案 C:目录开放,其余一律关闭
当产品目录和文档库才是你想被呈现出来的资产、而站点其余部分只是噪声时,这个方案很有用。
User-agent: GPTBot
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: ClaudeBot
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: PerplexityBot
User-agent: Perplexity-User
User-agent: Gemini-Deep-Research
Disallow: /
Allow: /products/
Allow: /catalog/
Allow: /datasheets/
Allow: /documents/
Allow: /sitemap-products.xml按照 RFC 9309,匹配路径最长的规则优先,所以对这些前缀而言,Allow 行会覆盖那条一刀切的 Disallow: /。不要想当然,务必去验证实际结果——各家解析器在边界情况下的行为仍然存在差异。
把“不”说得有分量:Content Signals
robots.txt 控制的是访问。一旦字节已经发出去,它对使用方式就无话可说了。Cloudflare 于 2025 年 9 月 24 日推出的 Content Signals Policy,在同一个文件中加入了机器可读的使用偏好,共有三个信号:search(构建搜索索引并提供搜索结果)、ai-input(把内容输入一个或多个 AI 模型)以及 ai-train(训练或微调 AI 模型)。
User-agent: *
Content-Signal: search=yes, ai-input=yes, ai-train=no
Disallow: /account/Cloudflare 已对超过 380 万个启用了其托管 robots.txt 的域名应用了 search=yes, ai-train=no,并刻意没有设置 ai-input,而不是替用户去猜。它是一种表明的偏好,不是强制执行机制——但它是一份清晰、有日期、机器可读的意图声明,值得拥有。
为什么“沉默”正在变成“不”
二十年来,robots.txt 里没有相关规则就意味着“可以”。这一默认正在基础设施层被收回,而那些从未碰过这个文件的制造商,正被自己的 CDN 替他们选择了退出。
- 2025 年 7 月 1 日 —— Cloudflare 成为第一家默认屏蔽 AI 爬虫的主要基础设施提供商(它大约挡在全网五分之一的流量前面),并会在每一个新接入的域名上先行询问是否允许它们。
- 2025 年 9 月 24 日 —— Content Signals Policy 上线,
ai-train=no被默认应用到 380 万个托管域名上。 - 2026 年 7 月 1 日 —— Cloudflare 宣布,自 2026 年 9 月 15 日起,在新域名、现有客户的新站点以及所有现有免费套餐客户上,展示广告的页面将默认屏蔽 Training 与 Agent 两类爬虫。Search 仍然放行。同时混合了 Search 与 Training 用途的多用途爬虫,将继承最严格的那条规则。
最后这一条要读准确,因为它被广泛误引。它的适用范围仅限于投放广告变现的页面,而大多数制造商的产品目录并不属于这一类。真正已经在影响你的是 2025 年那一条:如果你的站点是近期才接入某个现代 CDN 的,或者跑在免费套餐上,那么你可能在没有任何人做过决定的情况下,就已经在拒绝 AI 爬虫了。别想当然,先去查。
robots.txt 是请求,你的 WAF 才是执行
绝大多数出于好意的配置都栽在这一步。robots.txt 是一份自愿协议,只有守规矩的客户端才会去读它。你的机器人管理系统才是硬关卡,它按已验证的来源 IP 分类,而默认规则集通常会对任何不像浏览器的东西发起挑战或者直接拦下。一个读到 Allow: / 之后却收到 JavaScript 挑战的爬虫,就是被拦住了,不管文件里写了什么。
每一家主要运营方都会公布自己的 IP 段,方便你正确地做白名单放行:
| 运营方 | 公布的 IP 段 |
|---|---|
| OpenAI | gptbot.json、searchbot.json、chatgpt-user.json |
| Anthropic | claude.com/crawling/bots.json |
| Perplexity | perplexitybot.json、perplexity-user.json |
| googlebot.json、special-crawlers.json、user-triggered-fetchers-google.json | |
| Amazon | developer.amazon.com/amazonbot |
要检查日志里的某个具体地址是不是真的属于 OpenAI:
python3 - <<'EOF'
import ipaddress, json, urllib.request
probe = ipaddress.ip_address("132.196.86.5")
data = json.load(urllib.request.urlopen("https://openai.com/gptbot.json"))
nets = [ipaddress.ip_network(p.get("ipv4Prefix") or p.get("ipv6Prefix"))
for p in data["prefixes"]]
print(any(probe in n for n in nets if n.version == probe.version))
EOF三条边缘规则就能覆盖其中的大部分情况:
- 01在你的机器人评分规则触发之前,先放行已验证的 IP 段,并且只限定在公开的产品目录和文档路径上。
- 02让这些路径免于 JavaScript 挑战和限流。 非浏览器客户端解不了挑战,而一个要索引 40,000 个 SKU 的爬虫,一定会撞上为人类调校的速率限制。
- 03不要按 user-agent 字符串做白名单。 那是一个自由文本头部。先按 IP 匹配,再选择性地叠加 user-agent。
记住,每一个源都要单独配置。你的产品站点、文档子域名和 CDN 主机名,各自都需要自己的 robots.txt 和自己的 WAF 策略。
我如何从日志里验证它真的生效了?
没有在日志里验证过的配置,只是一个假设。下判断之前请留出几天:运营方会缓存 robots.txt,Meta 的文档提示变更最长可能需要 24 小时才会生效,而 Amazon 则表示其爬虫可能使用最近 30 天内缓存的副本。然后:
grep -aiE "GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User|Gemini-Deep-Research|Applebot|Amazonbot|Bytespider|CCBot|Meta-External" access.log | wc -l然后按代理和状态码拆开看——这才是真正重要的数字:
awk '/GPTBot/ {print $9}' access.log | sort | uniq -c | sort -rn你要找的是:
- 01每个代理都有非零的访问量。 在一个公开产品目录上,72 小时内没有任何 AI 代理发来请求,说明你是在上游被拦住了,而不只是没人搭理。
- 02以 2xx 为主的状态码分布。 满屏 403 意味着 WAF 正在压过 robots.txt。满屏 404 意味着你的 sitemap 或站内链接指向了已经不存在的 URL。
- 03文档路径也要出现,而不只是产品路径。 如果
/datasheets/从来不出现,说明你的技术资料库是隐形的。 - 04响应体积要说得通。 产品 URL 上反复出现 4–15 KB 的 200 响应,通常意味着爬虫收到的是一个空的客户端渲染外壳——技术上被允许,实际上毫无用处。
- 05用户触发类代理到底有没有出现。 ChatGPT-User、Claude-User 和 Perplexity-User 的流量,是你能拿到的最接近实时买家意向的信号,值得单独做成报表。
常见错误
- 在一条针对训练爬虫的一刀切规则里,顺手误伤了用户触发抓取器。
- robots.txt 配对了,WAF 却原封不动。这是两个开关,必须都拨到位。
- 忘了文档子域名、DAM 和 CDN,而按 RFC 9309,它们各自都是独立的源。
- 不让爬虫访问 CSS 和 JavaScript 资源。这对纯文本爬虫无所谓,但 Googlebot 和 Applebot 都会渲染页面,断了它们的资源就会劣化它们看到的内容。
- 想当然地以为聚合平台准确地承载着你的数据。它承载的只是它抓到的那一版,以及它抓取时的那个时间点。
- 把
llms.txt当成替代品。没有任何主要运营方承诺读取它,日志也普遍显示它从来没有被请求过。
2026 年 8 月,Partsgraph 审计了全球 984 个分销商与制造商域名,覆盖北美、欧洲和亚洲。其中只有 19% 发布了任何形式的明确 AI 爬虫政策——而在这些站点当中,屏蔽某个主要 AI 爬虫的数量,比主动邀请其抓取的多出一倍以上。没有一家对外提供 MCP 端点。AI 可见度得分的中位数是 100 分中的 50 分。这一差距目前还谈不上竞争激烈——而这恰恰说明,一份写得规范的 robots.txt,仍然是产品数据团队可以投入的、杠杆率最高的几小时工作之一。
用 Partsgraph 的免费评分工具在 [/audit](/audit) 上看看,AI 爬虫在你的域名上究竟能访问到什么。
常见问题
GPTBot 与 ChatGPT-User 有什么区别?
GPTBot 是批量爬虫,为 OpenAI 的基础模型采集训练数据,并且遵守 robots.txt。ChatGPT-User 抓取单个页面,是因为有人向 ChatGPT 提出了需要该页面才能回答的问题。OpenAI 的文档说明,由于这些动作由用户发起,robots.txt 规则可能并不适用。屏蔽 GPTBot 是一项授权决策;屏蔽 ChatGPT-User 则是拒绝回答一位真实客户的当场提问。
Google-Extended 是爬虫吗?
不是。Google-Extended 是一个 robots.txt 控制令牌,而不是抓取器,字节内容仍然由 Googlebot 取回。对 Google-Extended 设置 Disallow,是告诉 Google 不要把这些内容用于训练 Gemini 模型、也不要用作回答的事实依据,同时完全不影响正常的搜索索引。Apple 的 Applebot-Extended 工作方式与此相同。
屏蔽 AI 训练爬虫能让我的产品目录不进入 AI 模型吗?
基本上不能,而且会让你损失可见度。元器件数据已经在各分销商、聚合平台和 Common Crawl 之间被大量镜像,因此这些内容通常仍会进入模型——只不过是以第三方那份过时的副本,而不是你当前的权威版本。你失去了成为被引用来源的可能,却没有换来任何实质性的控制权。
主域名上的 robots.txt 会管到我的文档子域名吗?
不会。按照 RFC 9309,robots.txt 的作用范围只限于单个源:协议、主机和端口。你的 CDN 主机名、DAM 系统和文档子域名,各自都需要一份属于自己的文件。“robots.txt 看起来完全开放、爬虫却什么也拿不到”,最常见的单一原因就是这个。
为什么我的 robots.txt 写的是 Allow,爬虫却仍然被拦截?
因为 robots.txt 只是一个请求,真正执行拦截的是你的 WAF。机器人管理系统是按验证过的来源 IP 分类的,而不是按 user-agent 字符串,并且许多默认规则会对一切不像浏览器的流量发起挑战。你必须在边缘对已验证的爬虫 IP 段做白名单放行,而不能只在 robots.txt 里放行。
我是不是应该改用 llms.txt?
不是“改用”。截至 2026 年,尚无任何主要 AI 运营方承诺读取 llms.txt,Google 的搜索关系团队也拒绝为其背书。服务器日志普遍显示,AI 爬虫从不请求这个文件。你愿意的话可以发布它,但真正改变行为的,是 robots.txt、真实的可链接页面,以及对已验证机器人的白名单放行。
我怎么确认一次请求真的来自 GPTBot,而不是伪造者?
拿来源 IP 去比对 OpenAI 在 openai.com/gptbot.json 公布的前缀列表。每一家主要运营方都发布了同类的 JSON 文件,Google 还支持反向 DNS 验证。切勿只凭 user-agent 字符串——它极易伪造,而且声称自己是 AI 爬虫的流量中,有很大一部分并非如此。
资料来源
- 01OpenAI, Overview of OpenAI crawlers
- 02Anthropic, Does Anthropic crawl data from the web?
- 03Perplexity, PerplexityBot and Perplexity-User documentation
- 04Google Search Central, Google crawlers and user agents
- 05Google Search Central, user-triggered fetchers
- 06Apple Support, About Applebot
- 07Amazon, About Amazonbot
- 08Meta for Developers, Meta web crawlers
- 09Cloudflare, Content Independence Day: new AI traffic options, July 2026
- 10Cloudflare, Content Signals Policy, September 2025
- 11Cloudflare press release, blocking AI crawlers by default, July 2025
- 12RFC 9309, Robots Exclusion Protocol
- 13Forrester, The State Of Business Buying, 2026 (January 2026)
看清 AI 助手今天究竟能读取您产品的哪些信息、又有哪些读不到——爬虫抓取策略、目录覆盖率、数据手册可访问性,逐项评分,并与全球 984 家分销商和制造商对标。
为我的产品目录评分相关现场笔记
AI 爬虫不会执行 JavaScript
GPTBot、ClaudeBot 与 PerplexityBot 只解析服务器返回的原始 HTML,从不执行脚本,Google 是唯一的例外。客户端渲染的参数化目录,在 AI 助手眼中只是一具空壳。本文讲清如何用一条 c…
解决方案什么是智能体就绪的产品目录?
智能体就绪的产品目录要同时服务四个机器接触面:服务端渲染页面、纯文本视图、推送式产品数据流,以及 MCP 端点,四者互不替代。本文讲清每一个究竟是什么、今天真正在消费它的是哪些 AI 助手、它们各自做不到什么,以及如何用…
研究工业分销巨头的 AI 可读性得分反而最差
我们为 984 份工业产品目录评分,又在发布当天对 25 家家喻户晓的大牌企业做了一次实时复测:它们的中位分只有 40,而整体市场的中位分是 50,其中 15 家低于同组中位数,而全场最高分反倒属于一家无人听说过的小型专…