搜索抓取

识别真假搜索蜘蛛:UA、IP 与行为特征的三重核验

日志里每天都有自称搜索蜘蛛的访问,其中混着采集器、扫描器和伪装流量。本文从 UA 字符串、IP 归属与抓取行为三个层面,说明怎么一步步核验来访者身份,以及核验后该如何处理,避免把真实抓取挡在门外,也避免被伪装流量误导判断。

搜索抓取

识别真假搜索蜘蛛:UA、IP 与行为特征的三重核验

为什么需要核验身份

站点日志里,带 Spider 字样的 UA 随处可见。有些是真实搜索引擎的抓取,有些是第三方采集工具、安全扫描器,甚至有人直接把 UA 改成常见蜘蛛名。如果只看 UA 就下判断,容易出现两种误判:把伪装流量当成官方抓取,据此调整内容策略;或者把真实抓取拦掉,让页面迟迟不被发现。

第一层:UA 只是初筛条件

UA 字符串最容易伪造,改动成本几乎为零,所以它只能用来分类,不能用来定案。

  • 官方蜘蛛的 UA 通常包含固定的标识名和版本信息,格式相对稳定。
  • 如果同一时间段出现大量相同 UA,请求路径却集中在少数几个接口或参数页,就要多看一眼。
  • 有些采集器会拼接多个蜘蛛名,比如把两个搜索引擎的标识混在一起,这类 UA 基本可以直接判定为非官方。

把 UA 当作筛子,先分出“像官方抓取”“明显不是”两堆,再进入下一步。

第二层:IP 归属与正反解析

IP 比 UA 更难伪造,但也不是绝对可靠,需要两步验证。

反向解析

对来访 IP 做反向 DNS 解析,看解析出的域名是否落在搜索引擎官方域名后缀下。

正向解析

反向解析结果匹配之后,还要把该域名重新解析回原 IP,确认两边对得上,形成闭环。只做反向解析、不做正向验证,容易被伪造的 PTR 记录骗过。

官方 IP 段比对

主流搜索引擎会公布自己抓取所用的 IP 段。把日志里的 IP 与官方列表比对,是最直接的判断方式。要注意 IP 段会更新,定期同步一次,别拿几年前的旧列表当标准。

UA 用来分组,IP 用来过滤,行为用来定案。三层都过一遍,误判概率会低很多。

第三层:行为特征

身份核验到最后,还是要回到行为本身。真实抓取和伪装流量在节奏上有比较明显的差异。

  • 真实抓取通常按一定间隔分散请求,不会在极短时间内把全站扫一遍。
  • 抓取路径往往顺着链接结构走,从入口页向列表页、详情页推进,而不是随机撞 URL。
  • 伪装流量常常集中在后台路径、配置文件、常见漏洞地址上,这些路径正常蜘蛛没有理由访问。
  • 并发量也是信号:单个 IP 长时间维持极高并发,通常不是常规抓取行为。

在日志里做一轮完整核验

把上面三层串起来,可以按下面的顺序走一遍。

  1. 按 UA 分组,统计每个 UA 的请求量、路径分布和时间分布。
  2. 对可疑分组抽取若干 IP,做反向解析和正向解析双向验证。
  3. 把通过验证的 IP 与官方公布 IP 段交叉比对,标记出仍不匹配的部分。
  4. 对未确认的 IP,看请求路径和并发节奏,判断是采集、扫描还是真实抓取。
  5. 把确认的官方 IP 段整理成白名单,把高频异常 IP 单独记录下来。

核验之后怎么处理

核验的目的一是别误伤,二是别被带偏。确认是官方抓取,就按正常方式提供内容,不需要额外操作;确认是伪装流量,可以按站点自己的策略在服务器或 CDN 层做限制,但要注意别把整个 IP 段一刀切,避免牵连同段内的正常访问。

另外,核验结果值得定期回看。IP 段会变,采集工具的行为也会变,去年有效的判断标准今年未必还适用。把核验做成周期性动作,比一次性排查省事得多。

小结

判断来访者是不是真正的搜索蜘蛛,UA 只能用来分组,IP 用来过滤,行为用来定案。三层叠加之后再决定怎么处理,既能减少对真实抓取的干扰,也能让日志数据更干净,后续分析抓取路径和 URL 发现情况时,才不会被噪声带偏。