搜索抓取

核对蜘蛛来源:User-Agent、IP 段与反向解析的验证顺序

访问日志里带 bot 的请求并不都是搜索蜘蛛。本文整理一套核对顺序:先用 User-Agent 缩小范围,再比对官方 IP 段,最后用反向解析加正向解析做双重确认,并结合访问路径和代理头部判断,避免误封真实抓取,也避免把伪装爬虫当成搜索蜘蛛来统计。

搜索抓取

核对蜘蛛来源:User-Agent、IP 段与反向解析的验证顺序

日志里的“蜘蛛”不一定是蜘蛛

网站访问日志里经常出现带 bot 字样的 User-Agent,看起来像是搜索蜘蛛在抓取页面。实际情况要复杂一些:有一部分是真实的搜索引擎抓取,有一部分是第三方采集、监控工具、安全扫描器,甚至有人刻意伪装成搜索引擎蜘蛛来绕过限制。如果不做核对,很容易把假蜘蛛造成的压力当成搜索抓取问题来处理,也可能误封真实蜘蛛。

为什么要花时间核对来源

核对来源有几个直接的好处:

  • 判断服务器压力到底来自搜索抓取还是其他爬虫,避免调错方向;
  • 区分日志中不同来源的请求,统计出来的抓取数据才有参考价值;
  • 在设置限速、封禁规则时,不至于误伤真实蜘蛛;
  • 发现被大量伪造 UA 访问时,能及时检查是否有内容被搬运或扫描。

三层核对:UA、IP、反向解析

User-Agent 只能作为线索

User-Agent 是客户端自己声明的字段,可以随意伪造。它的作用主要是缩小范围:先从日志里筛出疑似蜘蛛的请求,再进入后面的验证,不能单独作为判断依据。

IP 段是较可靠的依据

主流搜索引擎会公布各自的抓取 IP 段或提供对应的验证文档。把日志 IP 与官方列表比对,能过滤掉相当一部分伪装请求。需要注意的是,这些列表会更新,建议定期重新拉取;同时不要凭记忆使用旧的 IP 段,否则容易把新加入的抓取节点当成假蜘蛛。

反向解析形成双重确认

比较稳妥的做法是反向解析加正向解析的组合验证:先对 IP 做反向 DNS 查询,看得到的主机名是否属于搜索引擎官方域名后缀;再对该主机名做正向解析,确认解析结果是否回到同一个 IP。两步都通过,可信度才比较高。只做反向解析,容易被伪造的 PTR 记录骗过。

一个可操作的核对顺序

  1. 从日志中按 User-Agent 筛选出疑似蜘蛛的请求,统计其 IP 分布;
  2. 将 IP 与搜索引擎官方公布的 IP 段比对,标记出范围内的部分;
  3. 对范围外的可疑 IP 做反向解析,检查主机名后缀;
  4. 对通过反向解析的 IP 再做正向解析,确认与原始 IP 一致;
  5. 把核对结果记录成清单,后续规则更新时沿用同一套流程。

核对之后可以做的事

确认真实蜘蛛的请求,可以按正常抓取来观察和优化;确认是伪装的爬虫,则视情况处理。常见方式包括按 IP 或 UA 组合做限速、对高频异常请求返回 403、在日志中标出这一类来源,方便后续统计。不建议看到 UA 里有 bot 就直接全局封禁,那样容易误伤真实抓取,也会让后续的日志分析失去基准。

几个容易被忽略的细节

  • 同一个搜索引擎可能有多个抓取用途的 UA,比如常规抓取、图片抓取、移动端抓取,核对时要分别对待;
  • 在 CDN 或反向代理后面,日志里记录的可能是节点 IP,需要从 X-Forwarded-For 等头部读取真实来源,并确认该头部是否可被外部伪造;
  • IPv6 抓取需要单独核对,很多 IP 段列表同时包含 IPv4 和 IPv6;
  • 假蜘蛛的请求路径往往集中在特定页面,比如接口、搜索页、用户页,结合路径判断更准确。
核对来源不是为了封掉所有非搜索引擎流量,而是让抓取相关的判断建立在可信的数据上。

把 UA、IP 段和反向解析这三步固定成流程,每隔一段时间重新核对一次,日志里的抓取数据会稳定很多。后续再做抓取预算、内链调整或服务器限速时,参照的就不再是一锅混在一起的访问记录。