搜尋抓取

识別真假搜尋蜘蛛:UA、IP 與行為特征的三重核驗

日誌里每天都有自称搜尋蜘蛛的訪問,其中混着采集器、掃描器和伪装流量。本文從 UA 字符串、IP 归属與抓取行為三個层面,說明怎么一步步核驗来訪者身份,以及核驗後该如何處理,避免把真實抓取挡在门外,也避免被伪装流量誤導判断。

搜尋抓取

识別真假搜尋蜘蛛:UA、IP 與行為特征的三重核驗

為什么需要核驗身份

站点日誌里,带 Spider 字样的 UA 随處可见。有些是真實搜尋引擎的抓取,有些是第三方采集工具、安全掃描器,甚至有人直接把 UA 改成常见蜘蛛名。如果只看 UA 就下判断,容易出現两種誤判:把伪装流量当成官方抓取,據此調整内容策略;或者把真實抓取拦掉,让頁面迟迟不被發現。

第一层:UA 只是初筛條件

UA 字符串最容易伪造,改動成本几乎為零,所以它只能用来分類,不能用来定案。

  • 官方蜘蛛的 UA 通常包含固定的标识名和版本信息,格式相對稳定。
  • 如果同一時間段出現大量相同 UA,請求路径却集中在少數几個接口或參數頁,就要多看一眼。
  • 有些采集器會拼接多個蜘蛛名,比如把两個搜尋引擎的标识混在一起,這類 UA 基本可以直接判定為非官方。

把 UA 当作筛子,先分出“像官方抓取”“明顯不是”两堆,再進入下一步。

第二层:IP 归属與正反解析

IP 比 UA 更难伪造,但也不是绝對可靠,需要两步驗證。

反向解析

對来訪 IP 做反向 DNS 解析,看解析出的域名是否落在搜尋引擎官方域名後缀下。

正向解析

反向解析结果匹配之後,還要把该域名重新解析回原 IP,確認两邊對得上,形成閉环。只做反向解析、不做正向驗證,容易被伪造的 PTR 记錄骗過。

官方 IP 段比對

主流搜尋引擎會公布自己抓取所用的 IP 段。把日誌里的 IP 與官方列表比對,是最直接的判断方式。要注意 IP 段會更新,定期同步一次,別拿几年前的舊列表当标准。

UA 用来分组,IP 用来過滤,行為用来定案。三层都過一遍,誤判概率會低很多。

第三层:行為特征

身份核驗到最後,還是要回到行為本身。真實抓取和伪装流量在节奏上有比較明顯的差异。

  • 真實抓取通常按一定間隔分散請求,不會在极短時間内把全站掃一遍。
  • 抓取路径往往顺着連結结构走,從入口頁向列表頁、詳情頁推進,而不是随机撞 URL。
  • 伪装流量常常集中在後台路径、配置文件、常见漏洞地址上,這些路径正常蜘蛛没有理由訪問。
  • 並發量也是信号:單個 IP 長時間维持极高並發,通常不是常規抓取行為。

在日誌里做一轮完整核驗

把上面三层串起来,可以按下面的顺序走一遍。

  1. 按 UA 分组,統計每個 UA 的請求量、路径分布和時間分布。
  2. 對可疑分组抽取若干 IP,做反向解析和正向解析双向驗證。
  3. 把通過驗證的 IP 與官方公布 IP 段交叉比對,标记出仍不匹配的部分。
  4. 對未確認的 IP,看請求路径和並發节奏,判断是采集、掃描還是真實抓取。
  5. 把確認的官方 IP 段整理成白名單,把高频異常 IP 單獨记錄下来。

核驗之後怎么處理

核驗的目的一是別誤伤,二是別被带偏。確認是官方抓取,就按正常方式提供内容,不需要額外操作;確認是伪装流量,可以按站点自己的策略在服務器或 CDN 层做限制,但要注意別把整個 IP 段一刀切,避免牵连同段内的正常訪問。

另外,核驗结果值得定期回看。IP 段會變,采集工具的行為也會變,去年有效的判断标准今年未必還适用。把核驗做成周期性動作,比一次性排查省事得多。

小结

判断来訪者是不是真正的搜尋蜘蛛,UA 只能用来分组,IP 用来過滤,行為用来定案。三层叠加之後再决定怎么處理,既能减少對真實抓取的干扰,也能让日誌資料更干净,後續分析抓取路径和 URL 發現情况时,才不會被噪声带偏。