蜘蛛池知识

蜘蛛池里的真假蜘蛛:UA 能伪造,验证该看哪些信号

蜘蛛池运营中,日志里出现的搜索引擎 UA 并不都是真蜘蛛。本文讲清为什么 UA 可以伪造、rDNS 与官方 IP 段怎么验证、行为特征能参考到什么程度,以及怎样避免把采集器和扫描器算成蜘蛛量,让判断回归到目标页抓取与索引上。

蜘蛛池知识

蜘蛛池里的真假蜘蛛:UA 能伪造,验证该看哪些信号

在蜘蛛池的日志里,看到一串带 Googlebot、Baiduspider、bingbot 的 UA,很容易让人以为蜘蛛来得很勤。但如果把这些访问直接当成抓取效果,往往会得出偏乐观的结论。UA 只是一段可以随意改写的请求头,采集器、扫描器、压力测试脚本都能把自己写成搜索引擎蜘蛛。

为什么日志里会有“假蜘蛛”

伪造 UA 的成本几乎为零,只是一行配置的事。采集程序伪装成搜索引擎蜘蛛,是为了绕开一些针对性的限制;扫描器往往随机挑一个常见 UA;还有一些预取、监控、代理服务的请求也会带着类似的标识。另一方面,真实蜘蛛的 UA 也在变化,移动端 UA、图片代理、版本更新后的新标识,都可能被不熟悉的人当成假的。

所以问题不在于“有没有假蜘蛛”,而在于你用什么依据去区分它们。只靠 UA 列表做匹配,等于把判断权交给了一个可以随意填写的字段。

验证真蜘蛛的几个信号

rDNS 反查与正向确认

以 Googlebot 为例,先对来访 IP 做反向 DNS,得到形如 crawl-xx-xx-xx-xx.googlebot.com 的主机名,再对该主机名做正向解析,确认能回到同一个 IP。两步都对上,可信度才高。Bing、Yandex 等也有类似的验证思路。

要注意,不是所有搜索引擎都长期提供可反查的 rDNS,有些请求会从云主机 IP 段发出。所以 rDNS 通过可以加分,rDNS 不通过也不一定就是假的,需要结合官方公布的 IP 段一起看。

官方 IP 段列表

Google、Bing 等会公布蜘蛛使用的 IP 段,有 JSON、文本等格式。把日志里的 IP 与这份列表比对,比看 UA 可靠得多。百度、搜狗等可以结合搜索资源平台和官方文档获取说明。维护一份定期更新的 IP 段清单,是蜘蛛池日志分析的基本功。

行为特征只能做参考

  • 真蜘蛛通常有抓取节流,不会在几秒内把入口页并发打满;
  • Googlebot 渲染页面时会请求部分 JS、CSS 资源,百度蜘蛛多数情况下主要取 HTML;
  • 真蜘蛛一般会请求 robots.txt,但 Google 会缓存该文件,不一定每次都读;
  • 真蜘蛛的请求通常不带 referer,或者 referer 指向自身域名;
  • 伪造者往往只请求目标 URL,不加载页面里的资源,也不管 robots 规则。

这些特征能帮你缩小范围,但单独拿出任何一条都不够:有的真蜘蛛也不加载资源,有的采集器同样会抓取 robots.txt。

用搜索资源平台交叉验证

Google Search Console 的抓取统计、百度搜索资源平台的抓取频次与抓取诊断,是官方给出的口径。当日志统计与官方数据差得很多时,优先相信官方数据。第三方工具给出的“蜘蛛量”如果只依据 UA 判断,通常会偏高。

几个容易踩的误判

  • 只看 UA 判断真假,所有统计都建立在一个可伪造的字段上;
  • 把扫描器、漏洞探测的高频请求当成蜘蛛,误以为池子“被盯上了”;
  • 用入口页的蜘蛛访问量代替目标页被抓取量,忽略两者之间还有链接和跳转;
  • 因为少量假蜘蛛就大规模封 IP,结果误伤真实蜘蛛的正常抓取。

实操上的建议

  1. 先把日志做结构化处理,把 UA、IP、rDNS 结果、请求路径放进同一张表里看;
  2. 对 Googlebot、bingbot 这类可验证的蜘蛛做严格校验,验证不通过的不计入蜘蛛量;
  3. 把“入口页被访问次数”和“目标页被抓取次数”分开统计,评估效果以后者为主;
  4. 封禁策略从宽到严,先观察再处理,避免一上来就按 UA 拉黑;
  5. 每隔一段时间更新官方 IP 段清单,搜索引擎的 IP 会有调整。
蜘蛛池的效果不是看日志里出现了多少个蜘蛛 UA,而是看目标页有没有被实际抓取、有没有进入索引。UA 只是线索,不是证据。

分辨真假蜘蛛,本质上是把判断依据从“可伪造的字段”换到“可验证的字段”。日志里的蜘蛛访问量可以参考,但决定要不要调整池子、怎么调整的,应该是经过验证的抓取数据,以及目标页在搜索引擎里的实际表现。