搜索抓取

如何确认来的是搜索蜘蛛:User-Agent、反向 DNS 与 IP 核对

抓取日志里出现搜索蜘蛛的 User-Agent,并不代表请求一定来自搜索引擎。本文介绍如何用反向 DNS、IP 段核对和日志特征辅助验证,说明只看 UA 的风险、误封真蜘蛛的代价,以及白名单配置和 CDN 场景下的注意点。

搜索抓取

如何确认来的是搜索蜘蛛:User-Agent、反向 DNS 与 IP 核对

抓取日志里出现一批 User-Agent 写着 Googlebot、Bingbot 的请求,并不代表它们都是真的。User-Agent 只是请求头里的一段文本,任何脚本都能伪造。要判断来访者是不是搜索蜘蛛,通常需要把 User-Agent、反向 DNS、IP 段核对组合起来看。

只看 User-Agent 为什么不够

User-Agent 是最容易被模仿的信号。伪装爬虫可能用搜索引擎的 UA 来抓取内容、探测后台或消耗服务器资源。反过来,真蜘蛛偶尔也会因为代理、中间层或版本更新,让 UA 看起来和常见值略有差异。只凭 UA 放行或拦截,误判概率都不低。

反向 DNS 验证的常见做法

反向 DNS 是较常用的一层验证:先对来源 IP 做 PTR 查询,看它解析出的域名是否属于搜索引擎官方域;再把该域名做一次正向解析,确认它指回同一个 IP。只有正反一致,才能作为较强的证据。

  1. 拿到访问日志中的来源 IP。
  2. 查询 PTR 记录,得到候选主机名。
  3. 检查主机名后缀是否在官方域内,例如 googlebot.com、google.com、search.msn.com 等。
  4. 对候选主机名做正向解析,核对 IP 是否与来源 IP 相同。

注意,PTR 记录本身可以配置,所以不能只做反向查询就放行。正向核对这一步很关键。

IP 段核对与官方列表

主流搜索引擎会公布自己的抓取 IP 段,格式可能是 JSON 或文本列表。可以把这些段导入防火墙或应用层规则,作为辅助判断。要注意两点:一是官方列表会更新,需要定期同步;二是经过 CDN、反向代理或云服务转发的请求,源站看到的 IP 可能不是蜘蛛真实 IP,这时要结合转发头或边缘日志判断。

日志里怎么落地排查

建议在日志中保留来源 IP、User-Agent、反向解析结果、请求路径、状态码和响应时间。按小时或按路径聚合后,更容易看出异常:同一个 IP 在短时间内大量请求、反向解析与官方域不符、频繁访问后台或参数链接,都值得进一步核实。但不要只凭单一特征直接封禁,先做灰度观察。

误封真蜘蛛的代价

真蜘蛛被持续返回 403、429 或连接超时后,抓取频率可能下降,恢复也需要时间。对依赖搜索流量的站点来说,这会影响新 URL 的发现和旧页面的更新检查。如果只是怀疑,可以先用较低频率限制或验证码挑战,而不是一刀切拦截整个网段。

放行假爬虫的风险

假蜘蛛如果被当成真蜘蛛放行,可能大量消耗带宽和数据库资源,甚至抓取到本不该公开的页面。除了身份验证,还可以配合速率限制、访问路径规则和行为特征来区分:正常蜘蛛通常有较稳定的抓取节奏,不会集中请求登录页、支付页或漏洞探测路径。

配置白名单时的几个注意点

  • 反向 DNS 结果可能被缓存,更新官方域后要留出生效时间。
  • 使用 CDN 时,源站防火墙不要直接按来源 IP 判断,先确认真实 IP 的获取方式。
  • 不要把规则写死到单个 IP,搜索引擎的抓取节点会变化。
  • 定期核对官方 IP 段和反向 DNS 域列表,避免规则过期。
  • 边缘层和应用层的验证逻辑尽量一致,否则会出现同一请求两处判断不同。

验证蜘蛛身份不是一次配置就结束。把日志观察、官方列表和反向 DNS 核对结合起来,定期复核,才能在减少误封的同时,降低伪装爬虫带来的干扰。