屏蔽GPTBot只挡训练,搜索可见性由搜索类爬虫决定

来源:互联网 时间:2026-10-24

robots.txt里加了两行,User-agent写GPTBot,Disallow写一个斜杠,按robots的约定,训练语料那条口子就关上了。加完第二天,老板问了一句,AI搜索里是不是也看不到我们了。这两件事在robots里是分开管的。

OpenAI官方公布的名字里,GPTBot用于抓取训练语料,OAI-SearchBot用于搜索展示,ChatGPT-User是用户当场触发访问时才来,三个名字管三件事。robots按UA分组生效,一组只约束一个名字,封掉一个不影响另外两个。很多人把它们当成一个东西,改了一条规则,以为三件事一起办了。要注意ChatGPT-User那一次访问,官方文档说这类请求robots规则可能不适用,想挡只能靠服务器层拦截或登录验证;它也不决定能不能出现在搜索结果里,那一项归OAI-SearchBot管。

屏蔽GPTBot的效果按OpenAI的说明是明确的:遵守robots的抓取会跳过被Disallow的路径,内容不进训练语料,前提是对方守规矩。它也不影响Googlebot、Baiduspider这些常规搜索爬虫,几组在robots里各自独立。

反过来说,要出现在搜索型答案里,得让搜索类爬虫进得来。OAI-SearchBot这条UA在robots里要放行,并按官方公布的IP段放行,正文还要能被切段,一段讲清一件事,小标题直接写成问题。页面被挡在门外,内容组织得再好也读不到。放行之后会不会被引用,公开文档里没有承诺,能做的只是把可读性做好。这里也没有可查的流量占比数据,别拿估算当依据。

只想挡训练、不想挡搜索,就在robots里单独给GPTBot写一组Disallow,不要用星号一把梭。星号会把所有爬虫一起挡住,搜索类爬虫也在其中,挡掉的就不止训练这一件事,搜索那边也跟着没了。

验证要看两处。一处是模拟UA,用curl的-A参数把UA换成GPTBot,再请求一个页面,看返回的是200还是403;robots只对守规矩的爬虫有效,服务器层的拦截才看得到状态码变化。另一处是服务器访问日志,按UA过滤,看这几类爬虫最近有没有来过。日志里没有记录,不能直接当成没来过:robots里写了Disallow,爬虫就不会发请求,日志里自然也留不下记录;日志轮转、改过log_format也会把记录盖掉。要判断是没来还是被挡,得把robots的写法跟日志放在一起看,单看一处会得出相反的结论。

先想清楚要的是哪一种:不被训练,还是被引用。前者挡训练爬虫,后者放行搜索爬虫,两个动作方向相反。两样都想要,就按UA分组分别写,一组只管一个意图。

相关文章

标签:

A5创业网 版权所有

返回顶部