在服务器日志中验证 AI 爬虫流量
简明回答
user-agent 可以伪造,只统计验证过的请求。Google 和百度用反向 DNS 查询验证。OpenAI、Perplexity、Anthropic 公布了 IP 列表,按 IP 段对照即可。
- 能拿到服务器或 CDN 的原始日志,其中包含每个请求的客户端 IP 和 user-agent。
- 有可以做 DNS 查询的 shell(
host或dig),或者能获取 JSON 并按 CIDR 匹配 IP 的脚本。
1. Google:先反向、再正向 DNS 查询
Section titled “1. Google:先反向、再正向 DNS 查询”host 66.249.66.1 # → crawl-66-249-66-1.googlebot.comhost crawl-66-249-66-1.googlebot.com # → 66.249.66.1(必须一致)Google 按爬虫类别以 JSON 文件公布 IP 列表,分为常规爬虫、特殊用途爬虫、用户触发的抓取工具。链接在其验证说明页上。
2. OpenAI 和 Perplexity:公布的 IP 段
Section titled “2. OpenAI 和 Perplexity:公布的 IP 段”每个文件列出若干 CIDR 前缀。请求要同时满足两点才算验证通过:user-agent 写明是该爬虫,并且 IP 落在该爬虫的某个前缀内。
3. Anthropic
Section titled “3. Anthropic”4. 百度:反向 DNS 查询
Section titled “4. 百度:反向 DNS 查询”host 123.125.66.120 # → Baiduspider-123-125-66-120.crawl.baidu.com百度的说明只做到反向查询这一步。再按 Google 的方法补一次正向查询,几乎没有成本,还能识破伪造的 PTR 记录。
5. 360 和头条:公布的 IP 段
Section titled “5. 360 和头条:公布的 IP 段”这份列表是 2019 年的,也没有机器可读的版本。IP 对不上时,应记为「未验证」,不能直接当作冒充。
- 抽查:为每个自称的爬虫挑一个请求,手动检查一遍。
- 在报表中区分自称的和已验证的爬虫流量。带有某爬虫 user-agent 但未通过验证的请求,是另一类流量,不应计入该爬虫。
验证本身是只读操作。如果你据此加了防火墙规则,就删除它们,改用 robots.txt 规则(为 AI 爬虫配置 robots.txt)。
- 只相信 user-agent 字符串。
- 永久缓存 IP 列表。这些文件带有
creationTime并会更新,应定期刷新。 - 按 user-agent 字符串屏蔽未验证的「Googlebot」。冒充者换个字符串就绕过了。反过来,按 IP 屏蔽真实爬虫,又可能让它们读不到你的 robots.txt。