蜘蛛池知识

蜘蛛池入口頁的抓取来源识別:怎么判断来的是真蜘蛛還是伪蜘蛛

入口頁日誌里寫着 Googlebot、Baiduspider 的請求,未必是真蜘蛛。本文從 UA 特征、IP 正反解析、官方 IP 段比對和請求行為四個角度,讲清怎么筛掉伪蜘蛛,以及 CDN 回源、预渲染服務等容易被誤判的情况,並给出一套可落地的日誌分层做法。

蜘蛛池知识

蜘蛛池入口頁的抓取来源识別:怎么判断来的是真蜘蛛還是伪蜘蛛

為什么入口頁的“蜘蛛訪問”经常是假的

翻日誌时,很多人只要看到 User-Agent 里带 Googlebot、Baiduspider,就记一次抓取。但 UA 是請求头里最容易改寫的字段,一個采集脚本、一個监控探针都能寫上同样的字符串。把伪蜘蛛当真蜘蛛,會带来两個错誤判断:一是以為抓取量還不错,二是按這個量去調整入口頁的數量和更新节奏,方向從一開始就偏了。所以在谈收錄和抓取量之前,先把来訪者身份分清楚。

UA 只能当线索,不能当證據

UA 的價值在于分流:先按 UA 把日誌切成几组,再對可疑的那一组做進一步校驗。常见的伪造特征是:

  • UA 寫得過于简短,缺版本号與平台标记,例如只有一個“Googlebot”;
  • UA 與請求内容矛盾,声称是移動端蜘蛛,却只請求桌面版路径;
  • 同一個 IP 在几分钟内轮換多個搜尋引擎的 UA;
  • 拼寫错誤,或使用早已停用的标识。

這些只能用作篩選條件,不能單獨下结论,因為真蜘蛛的 UA 也會随版本更新變化。

IP 反查:普通手段里最靠谱的一步

反向解析與正向解析要成對做

拿到可疑 IP 後先做反向解析(PTR),看域名是否落在搜尋引擎自己的域下;再對得到的域名做一次正向解析,確認能解析回同一個 IP。只有正反一致,基本可以認定為真。只看 PTR 容易被伪造的记錄骗過去。

對照官方公布的 IP 段

主流搜尋引擎會公布抓取 IP 段,可以定期拉取並本地比對,用脚本匹配比手工查询現實得多。對不上的先归入“待確認”,不要急着当伪蜘蛛删掉——CDN 回源、代理轉發都可能让源站看到的 IP 是中間节点的地址。

行為特征:真蜘蛛的爬行习惯

  • 抓取资源類型:通常先抓 HTML,是否加载 CSS、JS 取决于渲染能力,但不會像浏览器那样把全部资源拉一遍。
  • 並發與节奏:單 IP 並發一般不高,速度受站点响應與配額影响。
  • 參數與 Cookie:很少带业務參數,也不维持登入態。
  • 路径規律:顺着連結、sitemap、提交记錄走,路径之間有迹可循;伪蜘蛛往往按字典顺序掃。

几種容易被誤判成伪蜘蛛的情况

  • 站点接了 CDN 或反向代理,源站看到的全是中間节点 IP;
  • 使用了服務端渲染或预渲染服務,其訪問特征與真蜘蛛接近;
  • 自己配置的可用性监控、DNS 预取、内容校驗脚本;
  • 移動端與桌面端使用不同 UA,被错誤归入伪造组。

做判断前,先確認自己在鏈路上加了哪些中間层,否則很容易把自家服務当成伪蜘蛛。

實操:把日誌做成分层

  1. 按 UA 分组,統計各组的請求量、獨立 IP 數和訪問路径分布;
  2. 對每组做 IP 反查與官方 IP 段比對,标记“確認、待確認、疑似伪造”;
  3. 對疑似组的路径做抽样,看是否命中不存在的目錄、參數,或出現明顯的字典掃描;
  4. 把確認组單獨建一份抓取統計,用它评估入口頁的抓取状况,其余组只做參考。

分层的好處是,後續調整入口頁數量、更新频率时,依據的是可信資料,而不是被伪蜘蛛抬高或压低的數字。

识別真假蜘蛛只是基础工作,它不能保證抓取量提升,也不能保證 URL 被收錄。它的意义在于让判断有依據,避免在错誤的資料上做决策。