# GPTBot和ClaudeBot怎么配?先分清三类访问 > 很多网站开始配置 AI(人工智能)爬虫时,首先想到的是:到底应该全部允许,还是全部拒绝? 来源:https://www.starbox.work/insights/geo-guide/geo124/(星盒AI 知识中心,更新于 2026-10-09) 很多网站开始配置 AI(人工智能)爬虫时,首先想到的是:到底应该全部允许,还是全部拒绝? 这个问题不能统一回答。因为爬虫——也就是自动访问网站、读取网页内容的程序——来到网站,可能是为了三件完全不同的事:训练模型、支持搜索,或者响应某位用户的具体请求。 网站通常通过 `robots.txt` 表达自己的抓取规则。它是放在网站根地址下的公开文本文件,例如 `https://www.example.com/robots.txt`,用于告诉愿意遵守规则的爬虫:哪些页面可以访问,哪些页面不希望被访问。 这也是做 GEO(生成式引擎优化,本文指围绕网站内容在生成式 AI 搜索中的可见性进行优化)时必须分清的一件事:允许 AI 搜索爬虫,不等于同时允许模型训练爬虫。 本文讨论的是 OpenAI 和 Anthropic 与训练、搜索、用户请求直接相关的六个 `User-agent`。`User-agent` 是爬虫访问网站时报告的身份名称。只有先认清每个身份的用途,才能把规则写对。 如果网站希望保留出现在 ChatGPT 和 Claude 搜索结果中的机会,同时不希望公开内容被训练爬虫抓取,可以先采用以下选择: - OpenAI:允许 `OAI-SearchBot`,拒绝 `GPTBot`; - Anthropic:允许 `Claude-SearchBot`,根据业务需要决定是否允许 `Claude-User`,拒绝 `ClaudeBot`; - `ChatGPT-User` 需要单独看待:它由用户操作触发,OpenAI 明确说明,`robots.txt` 规则可能不适用于这类访问。 ## 先回答三个授权问题 配置前,不要先复制代码,先让内容、法务、安全和业务负责人回答三个问题。 ### 一、是否允许公开内容用于模型训练抓取 模型训练,是指使用数据改进生成式 AI 模型的能力。 OpenAI 用 `GPTBot` 抓取可能用于训练生成式 AI 基础模型的内容;Anthropic 用 `ClaudeBot` 收集可能用于模型训练的网页内容。 如果网站不接受这类用途,就应分别拒绝这两个爬虫。拒绝训练爬虫,并不等于必须放弃 AI 搜索可见性。 ### 二、是否希望内容进入AI搜索系统 OpenAI 用 `OAI-SearchBot` 支持 ChatGPT 搜索;Anthropic 用 `Claude-SearchBot` 改善 Claude 搜索结果的相关性和准确性。 允许这两个搜索爬虫,只表示网站没有通过 `robots.txt` 拒绝它们,并为页面进入相关搜索系统保留机会。它不保证页面一定会被抓取、收录、展示或引用。 OpenAI 明确说明,`OAI-SearchBot` 与 `GPTBot` 的设置彼此独立。网站可以允许前者,同时拒绝后者。[OpenAI爬虫官方说明](https://developers.openai.com/api/docs/bots) ### 三、是否允许AI根据用户请求读取网页 用户在 ChatGPT 或 Claude 中提出具体问题时,系统可能按需访问某个网页。这类访问分别对应 `ChatGPT-User` 和 `Claude-User`。 Anthropic 说明,网站可以通过 `robots.txt` 管理 `Claude-User`。拒绝它,可能导致 Claude 无法根据用户请求取回网页内容。 OpenAI 对 `ChatGPT-User` 的说明不同:这类访问由用户操作触发,不是自动遍历全网的爬取,`robots.txt` 规则可能不适用。它也不负责决定页面能否出现在 ChatGPT 搜索结果中。要管理搜索,应配置 `OAI-SearchBot`。[Anthropic机器人官方说明](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler) ![GPTBot和ClaudeBot怎么配?先分清三类访问](/static/img/insights/geo-guide/geo124-2.jpg) ## 六个User-agent分别负责什么 | 平台 | User-agent | 官方用途 | 拒绝后的主要影响 | |---|---|---|---| | OpenAI | `GPTBot` | 抓取可能用于训练生成式 AI 基础模型的内容 | 表示网站内容不应被用于相应的训练用途 | | OpenAI | `OAI-SearchBot` | 支持网站出现在 ChatGPT 搜索结果中 | 网站不会出现在 ChatGPT 搜索答案中,但仍可能以导航链接出现 | | OpenAI | `ChatGPT-User` | 在用户或自定义 GPT 提出请求时访问网页 | `robots.txt` 规则可能不适用,不能把 `Disallow` 当成可靠的访问拦截手段 | | Anthropic | `ClaudeBot` | 收集可能用于模型训练的网页内容 | 表示网站未来的材料应排除在相应的训练数据抓取之外 | | Anthropic | `Claude-SearchBot` | 改善 Claude 搜索结果的相关性和准确性 | 可能降低网站在 Claude 搜索中的可见性及相关结果的准确性 | | Anthropic | `Claude-User` | 在用户提问时按需访问网页 | 可能导致 Claude 无法根据相关用户请求取回网页内容 | 因此,放行 `GPTBot` 和 `ClaudeBot` 不是保留 AI 搜索机会的必要条件。它们处理的是训练抓取授权,不是搜索展示授权。 ![GPTBot和ClaudeBot怎么配?先分清三类访问](/static/img/insights/geo-guide/geo124-3.jpg) ## 写配置前,必须知道六条边界 ### 1. 三类访问需要分别决定 训练、搜索和用户触发访问是三项不同选择。不要因为希望页面进入 AI 搜索,就默认允许训练爬虫;也不要因为拒绝训练抓取,就连搜索爬虫一起拒绝。 ### 2. Allow不等于保证收录 `Allow: /` 的意思是允许该爬虫访问全部路径。它只说明 `robots.txt` 没有拒绝访问,不代表平台一定会抓取、收录、展示或引用页面。 ### 3. Disallow不是安全措施 `Disallow: /` 的意思是请求该爬虫不要访问任何路径。它表达的是网站的抓取偏好,不是身份验证,也不能阻止所有访问者打开页面。 RFC 9309 是 `robots.txt` 所依据的互联网标准。该标准明确说明,robots 规则不能代替内容安全措施。敏感内容必须使用登录验证、访问权限、网络隔离等方式保护。[RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html) ### 4. robots.txt按主机分别生效 主机在这里指一个具体的域名入口。`example.com`、`www.example.com` 和 `help.example.com` 即使属于同一家公司,也需要分别检查和配置自己的 `robots.txt`。 ### 5. Crawl-delay不是通用标准 `Crawl-delay` 的意思是设置抓取间隔。Anthropic 支持这项非标准指令,但它不属于 RFC 9309。不能因为 Anthropic 支持,就认为 OpenAI 或其他爬虫也会执行。 ### 6. ChatGPT-User需要单独处理 在 `robots.txt` 中为 `ChatGPT-User` 写入 `Allow` 或 `Disallow`,可以表达网站偏好,但不能据此认定用户触发访问一定会被允许或阻止。OpenAI 的官方说明是:这类访问由用户发起,robots 规则可能不适用。 ## 方案一:允许搜索,拒绝训练 如果网站希望保留 AI 搜索机会,同时谨慎处理训练授权,可以从下面这套配置开始: ```txt User-agent: OAI-SearchBot Allow: / User-agent: GPTBot Disallow: / User-agent: ChatGPT-User Allow: / User-agent: Claude-SearchBot Allow: / User-agent: Claude-User Allow: / User-agent: ClaudeBot Disallow: / Sitemap: https://www.example.com/sitemap.xml ``` 这套示例允许两家的搜索爬虫,拒绝两家的训练爬虫,并表达了允许用户触发访问的偏好。需要再次提醒:OpenAI 说明 `ChatGPT-User` 访问可能不受 robots 规则约束。 `Sitemap` 是网站地图文件,用于列出希望爬虫发现的页面。示例中的地址必须替换成网站自己的地址。 上线前,必须把这些内容与现有 `robots.txt` 合并,不能覆盖线上原文件。原有的 Googlebot、bingbot、后台目录、账户页、购物车、站内搜索页、参数页和测试目录等规则,都要继续保留。 ## 方案二:搜索和训练都允许 如果公司已经确认,公开内容可以被两家的训练爬虫访问,可以采用以下配置: ```txt User-agent: OAI-SearchBot Allow: / User-agent: GPTBot Allow: / User-agent: ChatGPT-User Allow: / User-agent: Claude-SearchBot Allow: / User-agent: Claude-User Allow: / User-agent: ClaudeBot Allow: / ``` 采用这套方案前,应由内容、法务、安全和业务共同确认授权范围。 即使写了 `Allow: /`,付费内容、客户数据、合同资料、个人信息和未发布页面也不能直接暴露在公网。`robots.txt` 是公开的抓取规则,不是保护敏感内容的工具。 ## 方案三:只开放指定公开目录 如果网站只准备向训练爬虫开放公开知识库,可以按路径配置: ```txt User-agent: GPTBot Allow: /knowledge/ Disallow: / User-agent: ClaudeBot Allow: /knowledge/ Disallow: / ``` 这组规则表示:允许访问 `/knowledge/` 目录,其他路径全部拒绝。 RFC 9309 规定,当多条规则都能匹配同一个访问路径时,应采用匹配内容更长、也就是更具体的那条规则。由于 `/knowledge/` 比 `/` 更具体,所以知识库目录会被允许,其他目录仍然被拒绝。 这段代码只演示训练爬虫的目录控制。搜索爬虫和用户触发访问是否也按目录开放,仍要分别配置。 规则上线后,还要查看服务器日志并进行实际测试。服务器日志会记录访问者使用的身份名称、访问路径、访问时间和服务器返回结果。只查看 `robots.txt` 的文字,不能证明爬虫已经按预期访问。 ## 已有robots.txt,应该怎样合并 ### 第一步:保存线上原文件 先保存生产环境正在使用的 `robots.txt`,并记录修改时间。不要用网上找到的模板直接覆盖原文件。 ### 第二步:整理现有User-agent组 列出文件中的全部 `User-agent`。如果同一个 `User-agent` 分散在多个位置,尽量整理到同一组,减少后续检查和维护中的混乱。 ### 第三步:保留原有业务限制 后台、账户、购物车、站内搜索、参数页、测试目录和重复网址等现有规则,不能因为新增 AI 爬虫配置而丢失。 ### 第四步:分别决定六类访问 对 `GPTBot`、`OAI-SearchBot`、`ChatGPT-User`、`ClaudeBot`、`Claude-SearchBot` 和 `Claude-User` 逐项判断。 不要只写 `User-agent: *`。通配规则只能表达统一选择,无法准确体现网站对训练、搜索和用户访问的不同态度。 ### 第五步:逐个主机部署 主域名、`www` 域名、帮助中心和其他子域的 `robots.txt` 互不替代。每个主机都要单独检查、部署和验证。 ## Crawl-delay什么时候使用 Anthropic 支持非标准扩展 `Crawl-delay`。如果服务器承受的访问压力较大,但网站又不希望完全拒绝 `ClaudeBot`,可以参考以下配置: ```txt User-agent: ClaudeBot Crawl-delay: 1 Allow: / ``` 这项指令只适用于明确表示支持它的爬虫,不能当成通用配置。 如果服务器持续出现高频访问、403、429 或超时,还要检查 CDN、WAF、缓存和服务器容量。 CDN 是内容分发网络,用于把网站内容分发到不同节点;WAF 是网站应用防火墙,用于识别和拦截异常访问。403 通常表示服务器拒绝访问,429 表示请求过于频繁。`robots.txt` 不能代替服务器限流和访问控制。 ## 上线前后检查这十项 HTTP 状态码是服务器返回的访问结果代码。配置完成后,至少检查以下内容: | 检查项 | 通过标准 | |---|---| | 文件位置 | 每个主机都能通过根地址下的 `/robots.txt` 访问规则文件 | | HTTP状态 | 返回 200,即服务器正常提供文件,而不是登录页或验证码页面 | | 文件格式 | 使用 UTF-8 这种通用文本编码,并以纯文本显示,没有乱码 | | GPTBot用途 | 团队已经明确允许或拒绝潜在训练抓取 | | ClaudeBot用途 | 团队已经明确允许或拒绝潜在训练抓取 | | 搜索爬虫 | `OAI-SearchBot`、`Claude-SearchBot` 已单独配置 | | 用户访问 | `ChatGPT-User`、`Claude-User` 已分别评估,并理解两家的规则差异 | | 原有规则 | 后台、账户、参数页和 Sitemap 等原有规则仍然保留 | | WAF和CDN | 没有把需要允许的官方请求全部拦截为 403 或 429 | | 日志复核 | 可以按 User-agent、路径、状态码和时间查看访问记录 | ## 三个常见误区 ### 误区一:放行GPTBot,就能进入ChatGPT搜索 不对。 ChatGPT 搜索对应的是 `OAI-SearchBot`,`GPTBot` 对应潜在训练用途。两项设置彼此独立。 ### 误区二:放行ClaudeBot,就等于放行Claude搜索 不对。 Anthropic 已经将 `ClaudeBot`、`Claude-SearchBot` 和 `Claude-User` 分开。要保留搜索可见性,需要单独配置 `Claude-SearchBot`。 ### 误区三:robots.txt能保护敏感数据 不能。 `robots.txt` 是公开文件,任何访问者都可以看到其中列出的路径。敏感内容必须通过登录验证、访问权限、网络隔离和服务器配置进行保护。 ## 最后应该怎么选 如果只想保留 AI 搜索机会,可以允许 `OAI-SearchBot` 和 `Claude-SearchBot`,先拒绝 `GPTBot` 和 `ClaudeBot`。 如果已经完成内容授权评估,再决定是否放行两家的训练爬虫。 如果只准备开放部分知识内容,就按目录编写规则,并通过服务器日志确认实际访问结果。 不要把六个 `User-agent` 统一设置为 `Allow`,也不要统一设置为 `Disallow`。训练、搜索和用户请求是三个不同的业务选择,应该分别决定、分别配置、分别验证。 ## 常见问题 ### 1. GPTBot和OAI-SearchBot有什么区别? `GPTBot` 用于抓取可能进入生成式 AI 基础模型训练流程的内容;`OAI-SearchBot` 用于支持 ChatGPT 搜索。两项 robots 设置彼此独立。 ### 2. ClaudeBot和Claude-SearchBot有什么区别? `ClaudeBot` 收集可能用于模型训练的网页内容;`Claude-SearchBot` 用于改善 Claude 搜索结果的相关性和准确性。 ### 3. 不放行GPTBot,会影响ChatGPT搜索吗? 按照 OpenAI 当前说明,`GPTBot` 和 `OAI-SearchBot` 可以独立配置。要保留搜索机会,应重点确认 `OAI-SearchBot` 没有被 `robots.txt`、WAF 或服务器拒绝。 ### 4. 不放行ClaudeBot,还能出现在Claude搜索中吗? Anthropic 将 `ClaudeBot` 和 `Claude-SearchBot` 分开。网站可以拒绝 `ClaudeBot`,同时允许 `Claude-SearchBot`,但页面最终是否被展示或引用仍不能保证。 ### 5. Crawl-delay是通用标准吗? 不是。它不属于 RFC 9309 的标准指令。Anthropic明确表示支持该扩展,其他爬虫是否支持,需要查看各自的官方文档。 ### 6. 修改后多久生效? 不同平台的处理周期不同。OpenAI 说明,其搜索系统可能需要约 24 小时才能根据更新后的 `robots.txt` 调整。因此,不能在保存配置后立即根据一次问答结果判断是否生效。 ## 官方资料 - [OpenAI Crawlers](https://developers.openai.com/api/docs/bots) - [Anthropic机器人说明](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler) - [RFC 9309:Robots Exclusion Protocol](https://www.rfc-editor.org/rfc/rfc9309.html)