挡训练爬虫时先分清机器人身份,访问控制和阅读路径各归谁管
配置 AI 爬虫策略时,访问控制由 robots.txt 负责,阅读路径由 llms.txt 负责,两者不能互相替代。更常见的坑是把标识混为一谈:GPTBot 不等于 OAI-SearchBot,ClaudeBot 不等于 Claude-SearchBot,同名前缀的检索型与训练型是两个用途,挡错组会连被答案引擎引用的入口一起关掉。
两个文件管的事不一样
一份 AI 爬虫访问控制的决策矩阵把这件事拆成两句:robots.txt 管访问,llms.txt 管导航。前者决定某个标识能不能抓取哪个路径,属于权限层;后者是在模型已经进入页面之后,给它一份结构化的阅读顺序,属于导航层。同一份材料还统计过主流标识的数量:八个主要 AI 爬虫各有不同的调用行为,因此规则要按用途分组写,而不是用一条通配把整段用户代理全部拒掉。若只想挡训练用途却把检索型一并关闭,等于同时放弃了在生成式答案里出现的资格。
按用途分组再写规则
| 用途 | 常见标识 | 该改哪一处 | 典型错法 |
|---|---|---|---|
| 模型训练 | GPTBot、ClaudeBot | robots.txt 的分组规则 | 用通配一把挡掉全部标识 |
| 检索与答案生成 | OAI-SearchBot、Claude-SearchBot | robots.txt 单独放行 | 与训练型归到同一组挡掉 |
| 已进入页面的阅读顺序 | 已放行的各类标识 | llms.txt 的结构描述 | 以为它能替代访问控制 |
| 传统搜索发现 | 搜索引擎爬虫 | 站点地图与链接推送 | 把发现寄托在配置文件上 |
配置要能被日志验证
改完先看日志:按标识统计请求分布,确认检索型仍在访问、训练型已经止住,再看被拒的是不是预期路径。站内侧 AnQiCMS 同时提供 robots.txt 配置与 llms.txt 自动生成,权限层与导航层在同一个后台维护,避免两处规则各说一套;站点地图的生成也在这里,发现环节不必另外拼装。需要提醒的是,标识由抓取方自行声明,遵守指令是行业惯例而不是强制约束,配置的意义在于清楚表达意图并留下可核查的痕迹,本身不构成技术隔离,重要内容仍要靠访问限制与授权来保护。
网关层与日志层的配合
规则写在站点里,执行却发生在两处。CDN 或边缘网关的爬虫管理常先于站点生效,站点内的配置只对自身直连的抓取有效,两边不一致时以先命中的那一层为准,因此改完规则之后要分别从边缘与源站各看一次响应。日志侧至少留四列:时间、用户代理、请求路径与状态码,按标识分组统计才有意义,只看访问总量看不出结构变化。若站点启用了缓存,还要确认规则文件没有被缓存在过期时间之外,改了没生效的情况里,相当大的比例其实只是缓存没有刷新。
常见问题
问:只写 llms.txt 能不能挡住训练? 答:不能。它不参与访问判断,挡训练要靠在 robots.txt 里按组拒绝,以及边缘网关上的对应策略。
问:规则里的大小写要不要区分? 答:用户代理组的匹配通常不区分大小写,路径匹配则区分,同一个文件里若同时写了允许与拒绝且条件相同,通常以允许为先。按这个假设写规则,再逐条用日志复核。
问:改完多久能看到效果? 答:取决于对方重新抓取与缓存的周期,判断依据是日志里请求分布的变化,而不是文件本身有没有生效。