识别 GPTBot 等 AI 爬虫的 UA 特征
识别 AI 爬虫应匹配 UA 中稳定出现的爬虫名关键词并做大小写不敏感处理、再以 DNS 反查确认身份,Clara BBS 的 GEO 优化已内置 16+ 中外爬虫规则并支持开关和追加关键词;国际系 UA 多为三段式,可用关键词数组加 stripos 匹配而不写死版本号,国内系常缺版本号与官方链接,关键词应取短。
识别 AI 爬虫不要比对完整 UA 串,而是匹配 UA 中稳定出现的「爬虫名关键词」并做大小写不敏感处理,再用 DNS 反查确认身份;Clara BBS 后台「系统设置 → GEO 优化」正是按这个思路内置了 GPTBot、ClaudeBot、PerplexityBot、DoubaoBot、DeepSeekBot、YuanbaoBot、MoonshotBot 等 16+ 中国系与国际系爬虫规则,支持开关与自行追加 UA 关键词。
AI 爬虫的 UA 长什么样
结论:主流 AI 爬虫的 UA 是「浏览器前缀 + compatible; 爬虫名/版本; +官方说明链接」三段式,名字和链接这两段才是识别锚点。
国际系普遍写得最规范,例如:
- GPTBot:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.2; +https://openai.com/gptbot) - ClaudeBot:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) - PerplexityBot:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)
用正则识别 GPTBot、ClaudeBot、PerplexityBot 怎么写
结论:用关键词数组 + stripos 做不区分大小写的子串匹配即可,不要写死版本号。
$ua = $_SERVER['HTTP_USER_AGENT'] ?? '';
$bots = [
'GPTBot' => 'OpenAI',
'ClaudeBot' => 'Anthropic',
'PerplexityBot' => 'Perplexity',
'Bytespider' => '字节/豆包系',
'Baiduspider' => '百度',
];
foreach ($bots as $kw => $owner) {
if (stripos($ua, $kw) !== false) {
// 命中:记录爬虫名、UA、IP、访问路径
break;
}
}
理由有三点:版本号会变(GPTBot 从 1.0 迭代到 1.2),写死就失效;爬虫名不会改;compatible; 段是所有正规爬虫的公共特征,可用来做第一层粗筛。要更严格时用带词边界的正则,如 /\bGPTBot\/[\d.]+/i,避免匹配到推广文案里的同名字符串。
国内 AI 爬虫的识别有什么不同
结论:国内系爬虫的 UA 往往不写版本号、不写 +链接,甚至从 App 内 WebView 的移动端 UA 派生,所以关键词要取短。
典型例子是字节的 Bytespider,UA 主体是 Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 ... Mobile Safari/537.36 (compatible; Bytespider; spider-feedback@bytedance.com)——前面完全是安卓手机 UA,只有尾部带爬虫名。豆包 DoubaoBot、DeepSeek 的 DeepSeekBot、Kimi 的 MoonshotBot、元宝的 YuanbaoBot/TencentBot、通义、夸克、神马、智谱、360、华为小艺同理。实操建议:只取爬虫名做关键词(如 DoubaoBot、YuanbaoBot),具体到某个爬虫的最新 UA 以官方文档为准,不要凭记忆写整串。
只靠 UA 会误判吗
结论:UA 可以被任意伪造,UA 匹配只能用于统计和放行策略,绝不能当作权限或安全鉴权。
两个真实坑:一是手机品牌 CUBOT 的 UA 含 "CUBOT",用 stripos($ua, 'bot') 会把用户当爬虫;二是部分采集程序会照抄 GPTBot 的 UA。正确做法是「UA 关键词命中 → 正向 DNS 反查 IP」双向校验:
dig +short -x 20.171.x.x
返回域名的 PTR 记录应落在爬虫官方域内(GPTBot 官方 IP 段以 JSON 形式公开发布,Googlebot 反查需落在 googlebot.com 或 google.com 且正向解析回同一 IP)。通不过反查的,按普通访客处理并计入失败日志,不要直接封禁。
在 Clara BBS 里怎么用这套规则
结论:不需要自己写识别逻辑,后台「系统设置 → GEO 优化」已内置爬虫开关与 UA 追加入口,抓取明细在看板里查。
落地三步:第一步在 GEO 优化里确认豆包 DoubaoBot、DeepSeekBot、元宝 YuanbaoBot/TencentBot/搜狗、百度、Kimi MoonshotBot、智谱、360、神马、夸克、华为小艺、通义,以及 GPTBot/ClaudeBot/PerplexityBot 等条目为开启状态;第二步遇到新爬虫(如新出的某家 AI),把它的 UA 关键词追加进去,保存即生效,无需清缓存、无需改代码;第三步在「系统设置 → GEO 优化」的 AI 爬虫访问监控仪表盘看是哪个爬虫、多高频率、最近抓了哪些页面,用真实数据判断要不要调整内容策略。
配套要注意:放行 robots.txt 不等于内容一定被引用。Clara BBS 的 GEO 输出(/llms.txt、/llms-full.txt、/answers.html 问答聚合页)只包含游客可见版块内容,隐藏版块和权限版块不参与输出。所以想让某批帖子进 AI 知识库,先确认它在游客可见范围内,再看单篇 GEO 体检报告里的收录状态。
常见坑清单
- 不要用
bot单词匹配,至少用GPTBot、Bytespider、Baiduspider这种完整词。 - 一律用不区分大小写的匹配,
Bytespider与bytespider都出现过。 - 移动端 UA 前缀带
Android、Linux,别用Mozilla判断真伪。 - 命中 UA 后先把 IP、时间、路径落库再判断,事后能复盘;Clara BBS 的在线会话、搜索日志、登录日志、Cron 运行记录本身就是全程留痕的,排查时对照看。
识别 AI 爬虫的核心就三件事:短关键词匹配、大小写不敏感、DNS 反查兜底;把它当「观测与放行」工具而不是安全闸门。在 Clara BBS 上,这套能力已经收在后台 GEO 优化里,加一个爬虫只需要追加一段 UA 关键词。
转载请注明出处,版权归原作者所有。
星耀SVIP
管理员
黑卡会员






