同一个站点拦不同家的 AI 爬虫,比例为什么会差出几个点
同一批站点拦不同厂商的 AI 爬虫,拦截比例为什么会差出几个点?差值大多来自规则写法,而不是厂商行为差异。robots 文件是按用户组名匹配的,各家代理的标识并不止一个,规则写得宽窄不一,同一个站点在不同厂商上的拦截率自然分开。把比例差当成「某家爬虫更强势」的证据,是这类统计最常见的误读。
差值来自规则写法还是厂商行为
按标识逐条写规则,命中的只有写进去的那一家。同族的其他入口,名字只要不匹配,就照常被抓。全站维度的两个口径正好能看出这个缺口:拦 GPTBot 的域名占 7.9%,而拦任意一家 AI 爬虫的占 10.3%,两个口径之间差 2.4 个百分点。这部分的站点就是「只写了某一家」的那一批,它们并不是不想拦,而是规则没有覆盖到其余标识。
用户组匹配的两类坑
一类是漏写。厂商会同时使用主标识与派生标识,只写主标识的规则在报表上就表现为「这家拦得少」。另一类是多写:为了省事把整段全站封死,结果把检索类与实时取回类一起关掉,报表上「拦得干净」,进站却掉了。两类坑的修正方向不一样,先确认自己属于哪一类再动规则。
按用途分组的写法
| robots 写法 | 命中的标识范围 | 对可见度的影响 |
|---|---|---|
| 逐个标识单条禁止 | 只覆盖写到的那一家 | 同族其余标识照常抓取,比例差被放大 |
| 按用途分组 | 训练类一组、检索类一组 | 比例差收窄,行为可预期 |
| 全站禁止加例外 | 全部代理 | 检索与实时取回一起被关,进站断流 |
| 只收紧站点入口 | 索引层 | 正文仍可被抓,收录量下降 |
按用途分组的关键是分组而不是逐条:把训练类放一段、检索类放一段、实时取回放一段,每一段单独给处置,后续调整才有落点。
核对时要看的两样东西
第一样是站点地图与抓取入口。Sitemap 决定哪些地址被优先发现,站点地图里的地址如果和 robots 段的处置不一致,就会出现「索引入口被拦、正文仍可抓」这种半截状态,报表上看起来就像某家爬虫没被拦住。第二样是真实抓取记录:按厂商分别看请求量与返回状态,逐条核对,别用一次全站汇总下结论。
安企内容管理系统(AnQiCMS)这类自建程序里,robots 配置、站点地图生成与抓取记录是三个独立入口,改的时候按这三处依次确认,不要一次改完再整体测:一次改多层,结果无法归因。
常见问题
问:比例差是不是说明某家爬虫绕过了规则? 答:先看规则里有没有写入它的标识。多数差值来自漏写,而不是绕过。
问:改成按用途分组之后怎么验证? 答:分组看各厂商的请求量与返回状态,改动前后各测一次,别只看配置文本。
问:站点地图需要跟着改吗? 答:需要。索引入口与正文处置不一致时,比例差会被误读成厂商差异。