从服务器日志里认出 AI 爬虫:GPTBot 之外的几个冷门 UA

· 资讯 · 阅读 5
摘要

放行规则写完了,日志里却看不到任何 AI 抓取——这时候别急着改内容,先确认一件事:抓取到底有没有发生。判断依据只有一个,access.log。 这篇只讲日志这一层。robots.txt 怎么放行、CDN 怎么拦,别处已经写过,这里不重复

放行规则写完了,日志里却看不到任何 AI 抓取——这时候别急着改内容,先确认一件事:抓取到底有没有发生。判断依据只有一个,access.log。

这篇只讲日志这一层。robots.txt 怎么放行、CDN 怎么拦,别处已经写过,这里不重复。

一条命令先看清总体分布

在日志目录里跑:

grep -iE "GPTBot|ClaudeBot|PerplexityBot|Bytespider|CCBot|OAI-SearchBot|Google-Extended" access.log | awk '{print $9}' | sort | uniq -c

输出的是各个状态码的数量。全 200 说明通了;出现 403,问题在防火墙或 CDN 那一层;出现 404,说明抓的是不存在的地址,通常来自旧链接或错误 sitemap。

一条记录都没有,也不代表一定被挡。可能只是还没被抓,新站尤其如此。

容易被漏掉的几个 UA

常见清单里通常只写 GPTBot、ClaudeBot、Bytespider 这几个,真到日志里翻,会多出一批名字不太一样的:

  • ChatGPT-User:用户提问时实时访问页面,不是批量抓取。它的访问往往是单次、零散,混在普通请求里很难认出来。
  • OAI-SearchBot:为搜索功能抓取,和训练用的 GPTBot 是两套。只放行 GPTBot 不等于搜索能用上你。
  • Claude-User:Anthropic 的实时读取 UA,和 ClaudeBot 同样分开。
  • Google-Extended:只控制内容是否用于 Gemini 训练,不影响 Googlebot 的搜索收录。这两个别混为一谈。
  • meta-externalagent:Meta 的抓取 UA,名字里没有「bot」,用 grep bot 会漏掉。
  • Applebot-Extended:Apple 的 AI 用途开关,同样带 Extended 后缀。

搜的时候别只 grep 「bot」。用 UA 片段匹配,或者干脆先把来源 IP 段拿去比对——OpenAI、Anthropic 都公布过爬虫 IP 列表,比 UA 可靠,因为 UA 谁都能伪造。

日志能看出的三种情况

情况一:有请求,200,但只抓首页。说明 robots.txt 通了,但内链结构没给到爬虫路径。看看 sitemap 是不是没提交、文章页是不是要多次点击才到。

情况二:有请求,全是 403。robots.txt 写得再好也没用,请求在更前面被挡了。这时候改内容纯属浪费。

情况三:刚放行两三天,什么都没有。大概率是正常的。AI 爬虫的抓取频率远低于搜索引擎,不是放行后立刻就来。等一到两周再看,用周维度的日志做对比,别用小时。

把检查做成例行

建议每月跑一次,固定记三项:AI 爬虫请求总数、状态码分布、被抓的 URL 数量。连续性比单次结果有用得多——某一周开始从有变无,通常意味着站点或 CDN 侧改了什么配置。

日志分析不能证明你被引用了,只能证明你被抓了。这两件事中间还隔着索引和选用,别把第一步的结果当成效果。