搜索抓取

怎么确认来访的是真搜索蜘蛛:UA、反向 DNS 与 IP 段的核对顺序

站点日志里自称搜索蜘蛛的请求并不都可信。本文给出可执行的核对顺序:先用官方 IP 段筛一遍,再做反向 DNS 与正向解析互相印证,最后才看 UA;并区分真蜘蛛与伪装爬虫的不同处理方式,减少误拦真蜘蛛、误放伪装爬虫,兼顾抓取与服务器稳定性。

搜索抓取

怎么确认来访的是真搜索蜘蛛:UA、反向 DNS 与 IP 段的核对顺序

站点日志里突然多出一批“搜索蜘蛛”的访问,先别急着在 robots.txt 里放行或封禁,需要先回答一个更基础的问题:来的是不是真的搜索蜘蛛。UA 字符串可以随手伪造,不少采集程序、监控工具、甚至一些蜘蛛池服务都会把 UA 写成 Googlebot 或 Bingbot。只看 UA 做判断,很容易一边把真蜘蛛挡在外面,一边给假蜘蛛开了绿灯。

只看 UA 会踩的两个坑

第一个坑是误伤。把 UA 里带 bot 的请求一律拦截,可能顺手拦掉真蜘蛛的部分 IP,随后出现抓取量下降、缓存内容变旧。第二个坑是误放。把写着 Googlebot 的请求全部当成真蜘蛛,等于给任意来源的爬虫开了后门,它们可以顶着这个身份高频抓取,服务器负载被悄悄吃掉。

几个比较典型的可疑信号:

  • UA 写着主流搜索引擎,但来源 IP 不在该引擎公布的网段里。
  • 请求频率远高于日志里真蜘蛛的常态,且集中在少数接口或列表页。
  • 只抓带参数的 URL,或只抓某个目录,不请求 robots.txt 与常见静态资源。
  • 反向 DNS 查不到记录,或主机名与该搜索引擎的官方域名后缀无关。

核对顺序:先 IP,再反向 DNS,最后正向解析

判断身份的顺序不能倒过来。UA 放在最后看,前面两步才是硬证据。

  1. 比对 IP 网段。主流搜索引擎都会公布自己的爬虫 IP 段或 JSON 列表,把日志里的来源 IP 和这份名单对照,不在名单里的先归为待核实。
  2. 做反向 DNS 查询。对 IP 反查得到主机名,再看主机名是否以官方域名结尾,例如以 googlebot.com、search.msn.com 这类后缀收尾。名字看起来像还不够,后缀必须对得上。
  3. 做正向解析回查。拿上一步得到的主机名再解析一次,确认返回的 IP 与最初记录的 IP 是同一个。只有这一步也对上,反向 DNS 才真正可信。
  4. 定期更新名单。IP 段会变,把比对规则做成定期拉取,比手工维护一份静态清单可靠。
反向 DNS 与正向解析互相印证,才算比较硬的证据;只对得上 UA,不构成判断依据。

验明身份之后:真蜘蛛放行,假蜘蛛按普通访客处理

对真蜘蛛

真蜘蛛要的不是特殊照顾,而是稳定和可预期:响应时间别忽高忽低,别让 WAF、验证码、Cookie 同意弹窗挡在抓取路径上,需要渲染的页面要保证 CSS、JS 可访问。如果站点压力确实大,优先在站长平台调整抓取速率,而不是直接在服务器上返回 403 或 429,后者可能让蜘蛛在之后一段时间里降低对整站的抓取。

对假蜘蛛

假蜘蛛不必单独设计策略,按普通访客的规则处理即可:按 IP 与路径限速,对异常高频的 UA 加 IP 组合做临时封禁,必要时上验证。要注意的是,不要因为某个 UA 被滥用过就全局拉黑这个 UA,真蜘蛛也会用同样的字符串。

限流要落在具体的维度上

服务器稳定性直接影响抓取,但限流不能一刀切。按 IP 限并发、按路径限频率、按连接数设上限,比按 UA 全站拦截更精准。观察几个指标:单 IP 的并发连接数、单位时间请求数、5xx 比例、平均响应时间。真蜘蛛的高频通常伴随正常的路径分布;伪装的爬虫往往集中在少数 URL 上,这两个特征比 UA 更能说明问题。

日志里至少要留下这几列

  • 来源 IP 与完整 UA 字符串。
  • 请求路径、状态码、响应时间、返回字节数。
  • Referer 与请求方法,便于识别非正常抓取。
  • 保留足够的日志周期,覆盖蜘蛛一轮抓取的间隔。

把身份核对做成固定动作之后,再谈 robots.txt、Sitemap 和抓取速率才有意义。否则一套针对“蜘蛛”的策略,可能作用在了一批并不是蜘蛛的请求上。