搜尋抓取

来訪的是不是真搜尋蜘蛛:反向解析與日誌核驗的實操

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 發現效率时,也不會被虚假流量带偏。