IP 风控笔记 · 第 1 篇

9 月 19 日到 10 月 16 日这四周,我的网站被各家爬虫抓了 41 万页。同期统计到的页面浏览是 14.8 万次,爬虫是它的近三倍。而这 14.8 万次里,还混着不少伪装成浏览器的程序。

更有意思的是另一组对比:抓得最多的是 Meta,10.6 万页,从它那里来的访客只有 1 个;Bing 只抓了 1.3 万页,带来了 15,834 个。

先交代一下

我在做一个查 IP 纯净度的小站 IPure(ipure.dev):输入一个 IP,看它是机房还是住宅、有没有上过黑名单、拿去做各种事合不合适。

上线一个月后,我给它加了访问统计。只记计数,不记访问者的 IP;爬虫按 User-Agent 归成家族,比如 Googlebot、ClaudeBot。下面是这四周的账。

谁在抓

在这里插入图片描述

按用途合起来:

用途页数占比
AI 用途23.9 万58%
搜索引擎7.2 万17%
SEO 工具8.4 万21%
其它1.5 万4%

「AI 用途」包括 Meta、Anthropic 的 ClaudeBot、OpenAI 的 OAI-SearchBot 和 ChatGPT-User、Amazonbot、PerplexityBot。传统搜索引擎全部加起来,不到 AI 用途的三分之一;Meta 一家就是 Google 搜索爬虫的三倍多。

抓得多,不等于带人来

把「抓了多少页」和「从它那里点进来多少人」放在一起看:

来源抓取页数带来的访客
Bing13,12115,834
ChatGPT38,9183,234
百度1261,960
Google31,189472
豆包65253
Yandex18,0009
Perplexity6,2644
Meta105,5061
Claude61,3780

几个看点。

Bing 的投入产出最高。 抓得不多,带来的访客比它抓的页数还多。我的站外部流量里 Bing 一直是大头,这张表解释了原因:抓得克制,排名给得大方。

ChatGPT 是 AI 里唯一真带人来的。 OpenAI 的搜索爬虫抓了 3.8 万页,换回 3,234 次点击,而且还在涨:最近几天每天一两百到五百多人。这个数实际只多不少:9 月 24 日起,ChatGPT 给出的链接不再带来源页(Referer),改成在网址后面加 utm_source=chatgpt.com。只看 Referer 的统计,会以为 ChatGPT 的流量在那天断崖归零。我是两天后才发现的,补上了按 utm 归类。如果你也在看 AI 带来的流量,这个坑值得查一下。

百度是最奇怪的一家。 它的爬虫四周只来抓了 126 页,10 月 10 日之前每天带来的访客最多十来个。10 月 11 日开始突然起量,从每天 98 个一路涨到 537 个,四周合计 1,960 个,已经是第三大来源。抓得这么少,排名是怎么给出来的,我到现在也没弄明白。

Claude 和 Meta 抓得很多,带回来的几乎为零。 ClaudeBot 抓了 6.1 万页,从 Claude 点进来的是 0。这不奇怪:ClaudeBot 主要在给模型收集数据,Claude 回答问题时替用户实时读网页,用的是另一个标识 Claude-User,四周里只来了 15 次。Meta 也一样,它的 meta-externalagent 官方说明就是用于训练 AI 模型和直接索引内容。

Google 抓得不少,给得不多。 新站在 Google 还没什么排名,3.1 万页换来 472 个访客。

robots.txt 只是君子协定

我的 robots.txt 写得很清楚:所有爬虫不许进 /api/,只对几家「替用户实时读取」的 AI 助手开放检测接口。

Meta 的爬虫没理这一条。四周里,它直接调了 13,884 次检测接口。更特别的是,它查的不是页面上链接出去的那些 IP。我抽了一天的 300 个,和它访问过的报告页一个都不重合。它是自己拿着一份 IP 列表,套进接口地址挨个查。

User-Agent 谁都能冒充,所以我先核实了来源:这些请求的真实地址全在 2a03:2880 开头的 IPv6 段,那是 Meta 自己的网络(AS32934),不是冒名的。

最后我没有拦它。检测接口背后调的是按次计费的数据源,但额度按天清零,用不完也是浪费。所以我给已知的爬虫单独开了一份额度,一开始是每天 1,500 次。后来发现一个问题:数据源的额度在北京时间早上 8 点清零,Meta 往往白天先来把爬虫额度用光,等晚上真人高峰的时候,当天的额度已经所剩不多。现在改成了每天 500 次、每分钟 15 次,数据源当天剩余不到 3,000 次就停发,先保证真人。

还有一类:伪装成浏览器的

除了报得出名字的,还有不报家门的。

  • 认不出名字的程序:5.4 万页,其中 4.1 万页集中在 9 月 23 日一天。
  • 伪装成浏览器的:更难认。我的英文报告页四周有 2.3 万次「浏览器」访问,可真实的英文访客每天只有个位数。10 月 9 日我查了半天的日志:1,709 次访问来自 1,694 个不同的 IP,没有一次带来源页,User-Agent 只在 8 个之间轮换。10 月 18 日它又来了,3 个小时 2,449 次,来自 2,427 个 IP。

它是怎么被认出来的、中间换过几次打法、又给我添了什么麻烦,下一篇细讲。

怎么用到你自己身上

看看你的站被谁抓了。 Nginx 默认日志格式下,一条命令就能按家族数:

awk -F'"' '{print $6}' access.log \
  | grep -oiE 'googlebot|bingbot|baiduspider|yandexbot|claudebot|gptbot|oai-searchbot|chatgpt-user|meta-externalagent|amazonbot|perplexitybot|bytespider|ahrefsbot|semrushbot' \
  | sort | uniq -c | sort -rn

辨真假,别只看 User-Agent。 Googlebot 可以反查域名,再正查回来:

host 66.249.66.1                       # 应该解析到 *.googlebot.com
host crawl-66-249-66-1.googlebot.com   # 再解析回同一个 IP,才算真的

Meta 看来源是否在 AS32934;OpenAI、Anthropic 都公布了自家爬虫的 IP 段,可以对照。

想被 AI 引用,就放行它的实时读取。 OAI-SearchBot 决定你能不能出现在 ChatGPT 的搜索结果里,ChatGPT-User 是用户提问时替他来读你的页面。统计 ChatGPT 带来的流量,记得把 utm_source=chatgpt.com 也算上。

如果你是写爬虫的那一方:robots.txt 管不住谁,但你的 User-Agent 和来源网段,在站长那里都是透明的。守不守规矩,对方看得一清二楚。

小结

  1. 四周 41 万页,AI 用途的爬虫占 58%,Meta 一家就有 10.6 万页。
  2. 抓取量和带来的访客几乎不相关:Bing 1.3 万页带来 15,834 人,Meta 10.6 万页带来 1 人,百度只抓了 126 页却带来 1,960 人。
  3. AI 里只有 ChatGPT 真的带人来,而且在涨;它从 9 月 24 日起改用 utm_source 标记来源,只看 Referer 会漏掉。
  4. robots.txt 是君子协定,Meta 的爬虫就没守;辨真假要看来源网段,不能只看 User-Agent。
  5. 真正难缠的,是伪装成浏览器、分散在上千个 IP 上的程序。下一篇讲它。

关于 IPure

IPure 是我做的 IP 纯净度检测站:查一个 IP 是机房还是住宅、是否被标记为代理出口、有没有上公开黑名单,再按 AI 服务、账号注册、流媒体等用途分别打分,每一分扣在哪都列出来。免费,不用注册。在终端里输入 curl -L ipure.dev,就能看到本机出口 IP 的报告。

点「阅读原文」可以直接打开。


文中数据均来自 ipure.dev 自身的访问统计,只记各类访问的计数,不记录访问者的 IP 或其它个人信息。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐