# AI爬虫 robots.txt 配置:允许搜索,拒绝训练 > 在做GEO,即生成式引擎优化时,网站常会遇到一个基础问题:哪些AI爬虫可以访问公开页面,哪些不可以。AI爬虫是平台自动访问网页的程序; 来源:https://www.starbox.work/insights/geo-guide/geo123/(星盒AI 知识中心,更新于 2026-10-08) 在做GEO,即生成式引擎优化时,网站常会遇到一个基础问题:哪些AI爬虫可以访问公开页面,哪些不可以。AI爬虫是平台自动访问网页的程序;`robots.txt`则是放在网站主机根目录的一份公开规则文件,用来告诉愿意遵守规则的爬虫,哪些路径允许抓取,哪些路径不允许抓取。 配置的难点不在于是否允许AI访问,而在于区分访问目的。目前常见的AI访问至少有三类:为了发现和记录网页而进行的搜索抓取、可能用于模型训练的抓取,以及用户提问后临时发起的页面访问。 这些用途通常对应不同的`User-agent`。`User-agent`是爬虫在访问网站时声明的身份名称。网站可以允许公开内容进入AI搜索,同时拒绝可能用于模型训练的抓取,不必把两类访问一并允许或一并拒绝。 如果没有区分用途,通常会出现三类问题:不希望开放的训练抓取被允许;原本需要保留的搜索抓取被误拦;`robots.txt`已经允许访问,请求却仍被CDN或WAF拦截。CDN是内容分发网络,负责在不同节点分发网站内容;WAF是网站应用防火墙,会在请求到达网页之前进行安全检查和拦截。 ## 一、先分清三类AI访问 下面列出几个常见平台的相关标识及其官方用途。 | 平台 | User-agent | 当前官方用途 | 配置时需要注意 | |---|---|---|---| | OpenAI | OAI-SearchBot | 用于发现可能出现在ChatGPT搜索结果中的页面,并支持摘要和引用 | 与GPTBot相互独立 | | OpenAI | GPTBot | 抓取可能用于基础模型训练的内容 | 可以单独拒绝,不影响OAI-SearchBot | | OpenAI | ChatGPT-User | 用户或自定义GPT主动请求网页时使用 | OpenAI说明,`robots.txt`规则可能不适用 | | Anthropic | Claude-SearchBot | 用于改善搜索结果质量 | 可以与训练爬虫分开配置 | | Anthropic | ClaudeBot | 收集可能用于模型训练的网页内容 | 可以单独拒绝 | | Anthropic | Claude-User | 用户提问时访问网页 | Anthropic称其机器人遵守`robots.txt` | | Perplexity | PerplexityBot | 建立搜索索引,并在结果中展示网页链接 | 官方说明不用于基础模型训练抓取 | | Perplexity | Perplexity-User | 用户提问后触发的页面访问 | 官方说明通常忽略`robots.txt` | | Google | Googlebot | 抓取网页并建立Google Search索引 | 决定Google搜索能否抓取相关内容 | | Google | Google-Extended | 控制Gemini训练及部分为回答获取依据的用途 | 它是写在`robots.txt`中的控制名称,不是独立发起请求的User-agent;不会影响Google Search收录 | 这张表说明,搜索抓取和训练抓取需要分别配置。 例如,一家企业希望公开内容有机会进入ChatGPT搜索结果,但不希望这些内容被GPTBot用于潜在的模型训练,就可以允许`OAI-SearchBot`,同时拒绝`GPTBot`。OpenAI官方说明,这两项设置相互独立。 Google的两项设置也需要分开处理。允许`Googlebot`,不代表必须允许`Google-Extended`。Google官方说明,限制`Google-Extended`不会影响网站进入Google Search,也不会成为Google Search的排名信号。 ![AI爬虫 robots.txt 配置:允许搜索,拒绝训练](/static/img/insights/geo-guide/geo123-2.jpg) ## 二、适合多数公开网站的基础模板 下面这份模板对应一种常见需求:允许传统搜索和AI搜索发现公开页面,同时拒绝已经明确用于模型训练的抓取。 模板中的`Allow`表示没有在`robots.txt`这一层拒绝抓取;`Disallow`表示要求愿意遵守规则的爬虫不要抓取相应路径。 这份模板不能直接覆盖线上文件。部署前必须先修改域名,再与网站现有的后台、账户、参数页、测试目录和隐私路径规则合并。 ```txt # 先保留并合并网站现有规则,不要直接覆盖旧文件 # 传统搜索 User-agent: Googlebot Allow: / User-agent: bingbot Allow: / # OpenAI:允许搜索,拒绝潜在训练 User-agent: OAI-SearchBot Allow: / User-agent: GPTBot Disallow: / # ChatGPT-User属于用户触发访问,robots.txt可能不适用 User-agent: ChatGPT-User Allow: / # Anthropic:允许搜索和用户访问,拒绝潜在训练 User-agent: Claude-SearchBot Allow: / User-agent: Claude-User Allow: / User-agent: ClaudeBot Disallow: / # Perplexity:允许搜索索引 User-agent: PerplexityBot Allow: / # Perplexity-User通常忽略robots.txt,此处只表达站点意图 User-agent: Perplexity-User Allow: / # Google-Extended与Google Search分开控制 User-agent: Google-Extended Disallow: / # 只有使用ChatGPT广告时,才根据业务需要加入广告落地页规则 # User-agent: OAI-AdsBot # Allow: / Sitemap: https://www.example.com/sitemap.xml ``` 在没有冲突规则的情况下,`Allow: /`通常不是必写项。模板将它明确列出,是为了让内容、技术、法务和安全团队直接看出每类爬虫采用了什么规则。 模板只展示了公开路径的基础设置。网站原有的`/admin/`、`/account/`、站内搜索参数页、测试目录和隐私路径限制仍需保留。 这里还涉及SEO,即搜索引擎优化。直接覆盖旧文件,可能使网站原有的搜索抓取设置和路径限制失效。 ![AI爬虫 robots.txt 配置:允许搜索,拒绝训练](/static/img/insights/geo-guide/geo123-3.jpg) ## 三、已有 robots.txt,怎样合并新规则 ### 第一步:备份每个主机的现有文件 先访问: ```txt https://你的域名/robots.txt ``` 保存当前版本,再开始修改。 `robots.txt`按照主机分别生效。主域名、`www`域名、博客子域和帮助中心子域都需要单独检查。主域名已经配置,不代表其他子域会自动使用相同规则。 ### 第二步:列出原本就需要限制的路径 至少核对以下内容: - 后台和账户页面 - 购物车和结算页面 - 站内搜索结果 - 测试环境和测试目录 - 带有大量参数的重复页面 - 不应公开的文件和路径 需要特别区分“限制抓取”和“保护数据”。`Disallow`只能向愿意遵守`robots.txt`的爬虫表达抓取要求,不能真正保护敏感信息。 会员内容、客户数据、报价后台、未发布资料和个人信息,必须通过登录权限、服务器身份验证、访问控制和必要的WAF规则进行保护,不能只写进`robots.txt`。 ### 第三步:按User-agent分别添加规则 将`OAI-SearchBot`、`GPTBot`、Claude的三类机器人、`PerplexityBot`和`Google-Extended`分别配置,不要把所有规则都写进`User-agent: *`。 只有分别设置,网站才能清楚表达“允许进入搜索,但拒绝用于潜在训练”这一选择。 `Google-Extended`需要单独说明:它是`robots.txt`中的控制名称,不是会以这个名称访问网站的独立程序。将它写成单独一组,是为了设置相应规则,不代表服务器日志中会出现名为`Google-Extended`的访问记录。 ### 第四步:保留并检查Sitemap Sitemap就是站点地图,用于列出网站希望搜索系统发现的规范网址。它不是爬虫放行指令,但有助于搜索系统发现网站中的有效页面。 Sitemap地址应使用完整网址,并确认访问时返回HTTP 200状态。HTTP状态码是网站服务器返回的处理结果,其中200表示请求成功。 ## 四、如果公司允许训练抓取 如果公司已经明确同意公开内容可以用于模型训练,可以调整以下三个控制项: ```txt User-agent: GPTBot Allow: / User-agent: ClaudeBot Allow: / User-agent: Google-Extended Allow: / ``` 这不只是一次技术配置变更,还可能涉及内容授权、合同承诺、付费内容和隐私政策,不应由技术部门单独决定。内容、法务、安全和业务负责人需要共同确认允许范围。 即使公司同意开放训练抓取,也不代表所有内容都应公开。会员内容、客户信息、内部报价、未发布资料和个人信息,仍然需要通过登录、身份验证、服务器权限和访问控制进行保护。 `robots.txt`不是安全防护工具。它只能约束愿意遵守规则的爬虫,而且访问请求中的`User-agent`名称可以被伪造。 ## 五、为什么不建议照抄“30个AI爬虫全部放行” 名单长不等于配置准确。把用途不同、来源不同的爬虫全部允许,会使网站无法针对不同访问目的设置规则。 ### 1. 爬虫名称和用途会变化 平台可能增加新的爬虫、调整现有爬虫的用途,或者更新官方IP地址范围。IP地址是设备或服务器在网络中的地址。网上流传的旧清单还可能包含已经停用、来源不明,甚至根本不遵守`robots.txt`的名称。 配置时应以平台当前的官方说明为准,不应长期照搬未经更新的转载名单。 ### 2. 搜索抓取和训练抓取用途不同 搜索抓取用于发现、记录和展示页面;训练抓取则可能把网页内容用于模型训练。把两类爬虫放在同一条规则下,网站就无法分别表达是否允许这些用途。 ### 3. robots.txt不能代替访问控制 即使`robots.txt`允许访问,CDN、WAF、验证码、地区限制、登录要求和访问频率限制,仍可能让请求返回403或429。403通常表示服务器拒绝访问;429通常表示短时间内请求过多。 反过来,即使`robots.txt`拒绝访问,也无法阻止不遵守规则的访问者。 ### 4. 只看User-agent不能确认真实身份 OpenAI和Perplexity都公布了官方IP地址范围。配置WAF允许规则或分析服务器日志时,应同时核对`User-agent`和官方IP来源,不能只凭请求中声明的名称判断访问者身份。 ## 六、上线后必须完成的8项实测 `robots.txt`成功保存,只能证明文件已经写入,不能证明整套配置已经生效。上线后至少要完成以下检查: | 检查项 | 通过标准 | |---|---| | 文件位置 | 每个主机的根目录都能访问`/robots.txt` | | HTTP状态 | 返回200,不是登录页、反复跳转或验证码页面 | | 内容类型 | 返回纯文本,中文注释和规则没有乱码 | | 规则合并 | 原有后台、参数页和站内搜索限制仍然存在 | | 搜索与训练 | `OAI-SearchBot`与`GPTBot`、`Claude-SearchBot`与`ClaudeBot`已经分开配置 | | WAF/CDN | 合法爬虫没有被403、429或要求运行JavaScript的验证页面拦截。JavaScript是网页中常用的脚本语言,普通爬虫未必能完成这类验证 | | 身份核验 | `User-agent`与官方IP地址范围或官方验证方法同时匹配 | | 日志观察 | 发布后持续检查抓取路径、状态码和访问频率 | 如果修改`robots.txt`后仍然看不到抓取,应先检查服务器日志。常见原因包括WAF误拦、网站服务器超时、DNS错误、重定向过多、页面要求登录,或者主要内容必须等网页脚本运行后才能显示。DNS负责把域名转换为网络访问所需的地址。 OpenAI和Perplexity都提示,`robots.txt`的调整可能需要一段时间才能反映到系统中。文件刚保存时,不能只根据一次搜索结果判断配置是否成功。 ## 七、最容易误判的三个问题 ### 1. 已经写了Allow,为什么仍然没有被引用? `Allow`只表示`robots.txt`没有拒绝抓取,不代表平台一定会访问、记录、展示或引用这个页面。 页面还需要能够正常打开,内容也要与用户提出的问题相关。因此,允许抓取和获得引用是两件事。 ### 2. 已经写了Disallow,为什么日志里还有访问? 先核对访问者是否为官方爬虫,再判断这次访问是否由用户主动请求触发。 OpenAI说明,`ChatGPT-User`的`robots.txt`规则可能不适用;Perplexity说明,`Perplexity-User`通常会忽略`robots.txt`。 如果网站必须强制阻止某类访问,应使用登录验证、服务器访问控制或WAF规则,不能把`robots.txt`当作安全防护措施。 ### 3. 屏蔽Google-Extended会影响Google搜索排名吗? 按照Google官方说明,不会影响网站进入Google Search,也不会成为Google Search的排名信号。 `Google-Extended`和`Googlebot`是两个不同的控制项,而且`Google-Extended`不是独立发起网站请求的User-agent。 ## 八、配置时最终要确认什么 一份可用的`robots.txt`,需要清楚回答三件事: - 哪些公开内容允许进入传统搜索和AI搜索; - 哪些内容不希望被用于潜在的模型训练; - 哪些路径原本就不应公开。 具体执行时,应先确认每个`User-agent`的官方用途,再编写对应规则;先备份并合并旧文件,再部署上线;上线后查看真实日志,再判断配置是否生效。 平台更新`User-agent`、用途说明或官方IP地址范围后,还需要重新核对官方文档。`robots.txt`不是配置一次就可以长期不管的文件,也不应一直沿用未经复核的旧清单。 ## 常见问题 ### robots.txt应该放在哪里? 放在每个主机的根目录,例如: ```txt https://www.example.com/robots.txt ``` 不同子域需要分别配置。 ### 可以只允许搜索、不允许训练吗? 可以。按照平台官方说明,将搜索使用的`User-agent`和训练使用的`User-agent`分别设置。 ### ChatGPT-User和Perplexity-User能通过robots.txt完全控制吗? 不能这样保证。两家官方都说明,用户触发的访问可能或通常不适用`robots.txt`。 ### robots.txt能保护隐私数据吗? 不能。隐私和敏感数据必须依靠登录、身份验证、服务器权限、访问控制和WAF保护。 ### 怎样确认来访者没有伪造User-agent? 结合平台公布的IP地址范围或官方验证方法进行核对,不能只看请求中声明的名称。 ## 官方资料 - [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) - [Perplexity Crawlers](https://docs.perplexity.ai/docs/resources/perplexity-crawlers) - [Google常见爬虫与Google-Extended](https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers)