搜索抓取

来访的是不是真搜索蜘蛛:反向解析与日志核验的实操

User-Agent 是最容易被伪造的字段,只凭它就判断访客身份,容易误伤真蜘蛛或放过假爬虫。本文讲一套可落地的核验方法:反向 DNS 三步确认、官方 IP 段比对、日志字段观察,以及误判之后该怎么调整限速与放行策略。

搜索抓取

来访的是不是真搜索蜘蛛:反向解析与日志核验的实操

抓取日志里出现一个陌生 User-Agent,或者某个 IP 突然高频访问全站,很多人的第一反应是「蜘蛛来了」。但 User-Agent 是请求头里最容易改写的字段,只凭它做判断,既可能把伪造爬虫当成搜索蜘蛛,也可能因为误封真蜘蛛,让已经发现的 URL 迟迟进不了抓取队列。

为什么只认 User-Agent 不靠谱

UA 字符串是一段明文,任何脚本都能照着抄一份。你在日志里看到 Baiduspider 或 Googlebot,并不代表请求真的来自搜索引擎的机房。反过来,真蜘蛛的 UA 偶尔也会带上版本号、平台标识等后缀,用模糊匹配一刀切,容易把正常请求误伤。

更稳妥的思路是:UA 只作为线索,真正用来定性的依据是网络层信息——请求来自哪个 IP、这个 IP 属于谁。

反向 DNS 核验:确认身份的三步流程

  1. 反查 IP:对来访 IP 做一次反向解析,看它对应的域名是什么。
  2. 正向回查:把上一步拿到的域名再解析一次,确认解回来的 IP 与原始访客 IP 完全一致。这一步常被称为前向确认反向解析(FCrDNS),缺少它,反查结果同样可以被伪造。
  3. 核对域名归属:检查域名后缀是否属于搜索引擎的官方域,例如 googlebot.com、google.com、search.msn.com、baidu.com 一类。

三步都通过,基本可以按真蜘蛛处理;只通过第一步,或者正反解析对不上,就应该当作可疑流量单独观察。

官方 IP 段是另一把尺子

  • 主流搜索引擎都会公布自己的出口 IP 列表,格式常见为 JSON 或纯文本。
  • 把列表缓存到本地,定期更新,遇到陌生 IP 先比对,再决定是否放行。
  • 站点接入 CDN 后,蜘蛛可能从边缘节点回源,回源 IP 会随节点变化,核验时要区分「访客 IP」和「回源 IP」,别把节点地址当成蜘蛛地址。

日志里值得盯的几个字段

  • 请求路径:蜘蛛从哪个入口进来、顺着哪条内链走下去,这比访问次数更能说明 URL 发现是否顺畅。
  • 状态码分布:5xx 比例上升,往往意味着服务端不稳定,抓取频率可能随之走低。
  • 响应时间:慢响应会长时间占用连接,同一时段能抓的页面就变少。
  • 抓取时段与频率:真蜘蛛通常有相对固定的节奏,突然全天候密集请求,值得核验一下 IP。
  • 是否取过 robots.txt 与 sitemap:正规蜘蛛一般会先读规则文件,从不请求这两类文件的「蜘蛛」需要打问号。

两个方向的误判都要防

第一种是把真蜘蛛拦在门外。防火墙按 UA 关键字拦截、WAF 把蜘蛛 IP 段误判为攻击来源,都会直接掐断 URL 发现通道,而且从日志上看只是「访问变少」,不容易第一时间察觉。

第二种是把假蜘蛛放进来。伪造 UA 的采集程序会大量消耗服务器资源,把带宽和连接数挤占掉,间接影响真蜘蛛的抓取效率。

核验的目的是让判断有依据,而不是给访客贴标签。真蜘蛛该放行,可疑流量该限速,这两件事的处理方式并不相同。

落到日常运营动作上

  • 保留一份核验记录:IP、反查域名、核验时间、处理结论,出问题时能回溯。
  • 对可疑 IP 优先限速,而不是直接封禁。限速可逆,封禁一旦误伤,恢复抓取需要更长时间。
  • 定期检查 WAF、CDN 与主机防火墙规则,确认没有把官方 IP 段写进黑名单。
  • 把核验结果和抓取数据对照着看:如果某段时间抓取量下降,同时日志里出现大量被拒请求,就该顺着规则查一遍。

蜘蛛身份核验不是一次性的工作,而是一个随着 IP 段更新、节点调整、规则变更不断复检的过程。把它做扎实,抓取日志里的数据才值得信任,后续判断抓取路径和 URL 发现效率时,也不会被虚假流量带偏。