蜘蛛池知识

蜘蛛池里的假蜘蛛:UA 核验、IP 反查与行为特征

蜘蛛池日志里出现大量带搜索引擎 UA 的请求,并不等于真的被搜索引擎抓取。本文整理三层核验思路:UA 字符串只当线索、用反向 DNS 与官方 IP 段做确认、再结合请求行为特征辅助判断,并说明假蜘蛛流量会给资源调整和效果判断带来哪些干扰。

蜘蛛池知识

蜘蛛池里的假蜘蛛:UA 核验、IP 反查与行为特征

看蜘蛛池的访问日志时,最容易犯的一个错误是:看到 UA 里写着 Baiduspider、Googlebot 或者 bingbot,就默认这是搜索引擎的抓取。实际上 UA 字符串是可以随手改的,采集工具、扫描器、甚至浏览器插件都能把 UA 伪装成任意值。如果不做核验,很容易把一堆无关流量当成抓取信号,进而做出错误的资源调整。

为什么日志里会混进假蜘蛛

常见的来源有几类:

  • 采集软件和爬虫框架的默认或自定义 UA,很多会直接模仿常见搜索引擎;
  • 安全扫描、漏洞探测工具,它们为了绕过简单的拦截规则,也会套用搜索引擎 UA;
  • 有人手动改 UA 做压力测试、抓取内容或做竞品监控;
  • 部分代理、预取服务和监控探针,UA 里会带上 bot 字样,但并不属于搜索引擎。

这些请求落在入口页上,看起来和真蜘蛛没有区别,但用途完全不同。

第一层:UA 字符串只当线索,不当结论

UA 的价值在于快速分流,而不是判定。可以先用它把日志分桶:声称是百度的、声称是 Google 的、声称是必应的、其他。分桶之后重点看两类异常:一是 UA 与声称身份明显不符,比如一个自称 Googlebot 的请求却只在抓 HTML、完全不碰任何静态资源;二是同一 IP 在短时间内用多个不同搜索引擎的 UA 轮流请求。这两类基本可以列为可疑,但不能仅凭 UA 就封禁。

第二层:rDNS 反查与官方 IP 段核对

这是最有效的一步。主流搜索引擎都提供了验证方式:对来访 IP 做反向 DNS 解析,检查解析出的域名是否落在官方域名下,然后再对该域名做一次正向解析,确认能解析回同一个 IP。只做单向反查是不够的,因为反向解析记录同样可以被伪造,一正一反互相印证才有意义。

另一个思路是直接比对官方公布的 IP 段列表。把日志里的 IP 与列表做匹配,不在列表里的就可以先归为可疑。要注意几点:CDN、云服务和代理转发会让真实来源 IP 变成回源 IP;IPv6 地址段需要单独维护;官方 IP 段会定期更新,最好隔一段时间同步一次。

第三层:行为特征辅助判断

身份核验通过之后,行为特征可以进一步确认,也可以用来发现一些边界情况:

  • 抓取频率是否平稳,真蜘蛛通常有相对稳定的节奏,而不是短时间爆发式请求;
  • 是否读取 robots.txt,是否遵守其中的屏蔽规则;
  • 是否请求页面引用的静态资源,很多采集工具只取 HTML;
  • 请求头是否完整,Referer、Accept、Accept-Language 这些字段缺失或异常是常见信号;
  • 并发连接数和请求间隔是否符合搜索引擎的公开说明。

这些特征单独看都不够,组合起来判断更可靠。

假蜘蛛流量会带来哪些误判

影响主要体现在三个方面。第一是效果判断失真:看到入口页每天都有一批带着搜索引擎 UA 的请求,就以为 URL 已经被发现了,实际上搜索引擎可能根本没来过。第二是资源调整跑偏:根据这些假数据去改链接结构、调入口页数量、换跳转方式,等于在错误的反馈上做优化。第三是服务器压力被错误归因,明明是采集流量,却以为是搜索引擎在加大抓取。

反向的风险同样存在。如果只用 UA 做封禁,很可能把真蜘蛛一起挡掉,尤其是一些低频抓取,一旦被拦,恢复需要时间。

可执行的核验顺序

  1. 按 UA 粗筛,把日志分成几个桶,先看有没有明显异常的组合。
  2. 对可疑 IP 做 rDNS 反查,并做正向解析回验。
  3. 比对官方 IP 段列表,把不在列表里的 IP 单独标记。
  4. 结合行为特征复核,确认哪些是采集、哪些是扫描。
  5. 拦截时优先按 IP 段处理,而不是只按 UA,避免误伤。
  6. 保留原始日志和核验记录,方便后续回溯和调整规则。
核验的目的是让判断更接近事实,而不是把所有非官方流量都挡在门外。入口页的价值在于被发现,过度拦截有时候比放过更麻烦。

蜘蛛池的效果本来就依赖日志反馈来调整,如果反馈源头是脏的,后面所有动作都会偏。花一点时间把蜘蛛身份核验做扎实,比反复调整入口页结构更划算。