常见問题

如何辨別真假搜尋蜘蛛:從 UA、IP 反查到行為特征的排查思路

日誌里带 Baiduspider、Googlebot 的請求並不都是真的。本文按 UA、IP 反查、行為特征三层,梳理辨別真假搜尋蜘蛛的排查顺序,並给出必备日誌字段、限速策略與常见誤判场景,帮助你把抓取資料變得可信。

常见問题

如何辨別真假搜尋蜘蛛:從 UA、IP 反查到行為特征的排查思路

做蜘蛛池或站点运营时,日誌里经常出現大量带 "Baiduspider"、"Googlebot" 之類 UA 的請求。這些請求里有一部分是真正的搜尋蜘蛛,也有一部分是伪装成搜尋蜘蛛的采集器、掃描器。如果不加区分,就容易得出错誤结论:以為入口頁被大量抓取,實际只是第三方爬虫在刷日誌。

為什么不能只看 User-Agent

UA 是客戶端自己填寫的字符串,任何人都可以伪造。只按 UA 統計抓取量,通常會出現两種誤判:一是把伪装爬虫算成搜尋蜘蛛,高估抓取情况;二是把真實抓取混在噪声里,看不出入口頁是否真的被回訪。

所以判断逻辑一般是层层叠加的:UA → IP 归属 → 行為特征,三层都吻合才相對可信。

第一层:UA 字符串的基础篩選

  • 看完整 UA,而不只是關鍵詞。真實搜尋蜘蛛的 UA 通常带有产品名、版本或說明連結。
  • 注意大小寫與空格差异,伪装爬虫常寫成 "baiduspider"、"googlebot " 這類變体。
  • 留意同一 IP 在短時間内频繁切換不同搜尋引擎的 UA,這基本可以判定為伪装。

第二层:IP 與反向 DNS 驗證

主流搜尋引擎一般會公開自家蜘蛛的 IP 段或提供驗證方式,可以用反向 DNS 做交叉驗證:

  1. 對日誌里的来源 IP 做反向解析,得到域名。
  2. 再對该域名做正向解析,看是否能解析回同一個 IP。
  3. 正反结果一致,且域名归属于對應搜尋引擎,可信度才較高。

需要注意的是,站点如果用了 CDN 或反向代理,日誌里记錄的可能是 CDN 节点 IP,而不是蜘蛛的真實 IP。這種情况下要先從請求头里取真實来源 IP,再做驗證。

第三层:行為特征

  • 是否請求 robots.txt:正規蜘蛛通常會在一定周期内讀取 robots.txt,伪装爬虫往往直接抓内容頁。
  • 抓取节奏:正規蜘蛛一般有相對稳定的並發和間隔,伪装爬虫常见高並發、几乎無間隔、集中在少數路径。
  • 請求路径:伪装爬虫容易集中在文章頁、接口或參數化 URL,對入口頁這類連結頁兴趣不大。
  • 請求头完整性:Accept、Accept-Encoding、Referer 等字段缺失或異常,也是常见信号。

常见的几個坑

  • 只按 UA 建白名單,结果把伪装爬虫也放了進来。
  • 因為反向 DNS 查询慢,就完全跳過驗證,導致後續統計全部失真。
  • 直接把某個 IP 段整段封禁,可能誤伤 CDN 或正常用戶。
  • 日誌没记錄响應時間、狀態碼、响應体大小,只看到訪問次數,排查时缺少關键信息。
辨別真假蜘蛛的目的不是"逮住伪装爬虫",而是让抓取資料可信。資料不可信时,任何關于入口頁效果的判断都只是猜测。

實操建议

  1. 日誌至少保留:時間、来源 IP、UA、請求路径、狀態碼、响應時間、响應体大小。
  2. 按 UA + IP 分组統計,而不是只按 UA 匯總。
  3. 對高频、行為異常的来源優先做限速,而不是直接封禁。
  4. 定期抽查已驗證的 IP 列表,搜尋引擎的 IP 段會變動。
  5. 把入口頁和内容頁分開統計,观察两類頁面的抓取比例變化。

各家搜尋引擎提供的驗證方式和 IP 說明並不相同,具体以官方文档為准。如果日誌里同时存在大量可疑請求和少量真實抓取,建议先解决資料清洗問题,再去讨论入口頁的狀態碼、更新频率和連結结构,得到的结论會可靠得多。