搜尋抓取

核對蜘蛛来源:User-Agent、IP 段與反向解析的驗證顺序

訪問日誌里带 bot 的請求並不都是搜尋蜘蛛。本文整理一套核對顺序:先用 User-Agent 缩小范围,再比對官方 IP 段,最後用反向解析加正向解析做双重確認,並结合訪問路径和代理头部判断,避免誤封真實抓取,也避免把伪装爬虫当成搜尋蜘蛛来統計。

搜尋抓取

核對蜘蛛来源:User-Agent、IP 段與反向解析的驗證顺序

日誌里的“蜘蛛”不一定是蜘蛛

網站訪問日誌里经常出現带 bot 字样的 User-Agent,看起来像是搜尋蜘蛛在抓取頁面。實际情况要复杂一些:有一部分是真實的搜尋引擎抓取,有一部分是第三方采集、监控工具、安全掃描器,甚至有人刻意伪装成搜尋引擎蜘蛛来绕過限制。如果不做核對,很容易把假蜘蛛造成的压力当成搜尋抓取問题来處理,也可能誤封真實蜘蛛。

為什么要花時間核對来源

核對来源有几個直接的好處:

  • 判断服務器压力到底来自搜尋抓取還是其他爬虫,避免調错方向;
  • 区分日誌中不同来源的請求,統計出来的抓取資料才有參考價值;
  • 在設定限速、封禁規則时,不至于誤伤真實蜘蛛;
  • 發現被大量伪造 UA 訪問时,能及时检查是否有内容被搬运或掃描。

三层核對:UA、IP、反向解析

User-Agent 只能作為线索

User-Agent 是客戶端自己声明的字段,可以随意伪造。它的作用主要是缩小范围:先從日誌里筛出疑似蜘蛛的請求,再進入後面的驗證,不能單獨作為判断依據。

IP 段是較可靠的依據

主流搜尋引擎會公布各自的抓取 IP 段或提供對應的驗證文档。把日誌 IP 與官方列表比對,能過滤掉相当一部分伪装請求。需要注意的是,這些列表會更新,建议定期重新拉取;同时不要凭记忆使用舊的 IP 段,否則容易把新加入的抓取节点当成假蜘蛛。

反向解析形成双重確認

比較稳妥的做法是反向解析加正向解析的组合驗證:先對 IP 做反向 DNS 查询,看得到的主机名是否属于搜尋引擎官方域名後缀;再對该主机名做正向解析,確認解析结果是否回到同一個 IP。两步都通過,可信度才比較高。只做反向解析,容易被伪造的 PTR 记錄骗過。

一個可操作的核對顺序

  1. 從日誌中按 User-Agent 篩選出疑似蜘蛛的請求,統計其 IP 分布;
  2. 將 IP 與搜尋引擎官方公布的 IP 段比對,标记出范围内的部分;
  3. 對范围外的可疑 IP 做反向解析,检查主机名後缀;
  4. 對通過反向解析的 IP 再做正向解析,確認與原始 IP 一致;
  5. 把核對结果记錄成清單,後續規則更新时沿用同一套流程。

核對之後可以做的事

確認真實蜘蛛的請求,可以按正常抓取来观察和優化;確認是伪装的爬虫,則视情况處理。常见方式包括按 IP 或 UA 组合做限速、對高频異常請求返回 403、在日誌中标出這一類来源,方便後續統計。不建议看到 UA 里有 bot 就直接全局封禁,那样容易誤伤真實抓取,也會让後續的日誌分析失去基准。

几個容易被忽略的细节

  • 同一個搜尋引擎可能有多個抓取用途的 UA,比如常規抓取、图片抓取、移動端抓取,核對时要分別對待;
  • 在 CDN 或反向代理後面,日誌里记錄的可能是节点 IP,需要從 X-Forwarded-For 等头部讀取真實来源,並確認该头部是否可被外部伪造;
  • IPv6 抓取需要單獨核對,很多 IP 段列表同时包含 IPv4 和 IPv6;
  • 假蜘蛛的請求路径往往集中在特定頁面,比如接口、搜尋頁、用戶頁,结合路径判断更准确。
核對来源不是為了封掉所有非搜尋引擎流量,而是让抓取相關的判断建立在可信的資料上。

把 UA、IP 段和反向解析這三步固定成流程,每隔一段時間重新核對一次,日誌里的抓取資料會稳定很多。後續再做抓取预算、内鏈調整或服務器限速时,參照的就不再是一锅混在一起的訪問记錄。