CClara轻量论坛系统

识别 GPTBot 等 AI 爬虫的 UA 特征

CLARA轻量论坛系统
CLARA轻量论坛系统 星耀SVIP星耀SVIP管理员管理员 黑卡会员黑卡会员
发布于 2026-11-14 01:27 ·1 浏览 ·0 回复
内容摘要

识别 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 关键词。

本文转载自 Clara轻量论坛系统,原文地址:https://www.leleweb.cn/thread-1163.html
转载请注明出处,版权归原作者所有。
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 0

还没有回复,来抢沙发~