19LAB NOTES

怎么确认一个请求真是 AI 爬虫:别只看 User-Agent,做多因子证据链

GEO 实验 2026-05-29 views 1 1184 chars

AI Bot 身份验证不能只靠 UA。要结合官方 IP JSON、反向 DNS、HTTP Message Signatures(Web Bot Auth)和日志,做多因子判断;UA 可伪造,IP 会变。

# 怎么确认一个请求真是 AI 爬虫:别只看 User-Agent,做多因子证据链

很多站点做 AI 访问控制时,只看 User-Agent:像不像 OpenAI、Google、Perplexity,就放行或拦截。这个判断越来越不够——UA 可伪造,IP 会更新,而且训练、搜索、用户触发、广告校验是不同入口,清单也各不相同。

## 事实一:官方 IP JSON 是分入口发布的

OpenAI 分别公开了 OAI-SearchBot、ChatGPT-User、GPTBot、OAI-AdsBot 的 IP JSON(AdsBot 的正确文件是 `adsbot.json`,不是 `oai-adsbot.json`;它用于广告落地页安全/相关性校验,不代表 ChatGPT Search 引用,也不是训练抓取)。其中 **ChatGPT-User 这类用户触发 fetcher 的 IP 清单近期有更新**——旧 IP 不能当永久真相。

## 事实二:Web Bot Auth 是新方向,但仍是实验

Google 正在测试 **Web Bot Auth**:部分托管在 Google 基础设施上的 AI agent 请求会带 `Signature-Agent`(例如指向 `https://agent.bot.goog`),需按 **RFC 9421 HTTP Message Signatures** 验证。但 Google 明确:不是所有 user agent、也不是同一 agent 的每个请求都会签名。所以**不能把"有没有签名"当唯一身份证**,仍需回退到传统验证。

## 可执行动作:建一张多因子校验表

每条可疑请求至少记录:`UA`、`IP 段`、`反向 DNS`、`签名头(Signature-Agent)`、`状态码`、`访问页面`。

1. **不按公司名一刀切**,按用途分列:SearchBot / User / GPTBot / AdsBot 各占一列。
2. **WAF 识别同时看官方 IP JSON 与 UA**,不只看其中一个;白名单**低频自动同步**,不要手工把一次查到的 IP 写死。
3. 把请求分成 `signed / unsigned / unknown` 三类,**不要把 unsigned 直接判成假 bot**。
4. 仅靠封源 IP 不能正确表达 opt-out——那可能反而挡住爬虫读 `robots.txt`,让退出信号失效。

## 一句话

身份不是单字段问题,是证据链问题:UA 像不像 + IP 在不在官方段 + 反向 DNS 对不对 + 有没有有效签名,合起来才下结论。

---

*本页为 19LAB「GEO 实验」主题权威页,合并自此前 5 篇相关笔记;旧链接已 301 至本页。*