搜尋抓取

抓取請求的身份核對:UA、反向解析與行為特征的一致性检查

日誌里带着搜尋引擎 UA 的請求,並不一定来自搜尋蜘蛛。本文從 UA 字段、反向解析、IP 段归属與行為特征四個角度,說明如何核對抓取請求的真實身份,並给出誤封與誤信两種情况的處理思路。

搜尋抓取

抓取請求的身份核對:UA、反向解析與行為特征的一致性检查

站点运维到一定阶段,日誌里常常會出現大量带着搜尋引擎 UA 的請求。這些請求里,有真實蜘蛛,也有伪装脚本。前者關系到 URL 發現與内容更新,後者只是消耗带宽和 CPU。核對身份的意义,就是把這两類流量分開處理,而不是把所有带蜘蛛 UA 的請求都当成同類。

為什么需要核對

两種誤判都會带来麻烦。誤封指把真實蜘蛛拦在门外,结果是新頁面迟迟不被發現,Sitemap 提交後也看不到對應的抓取记錄。誤信則相反,把伪装脚本当成搜尋引擎,任由它高频請求,服務器负载上去之後,真實蜘蛛的响應也會變慢,抓取节奏跟着受影响。

UA 字符串是最容易伪造的部分,只看這一個字段几乎没有判断價值。真正有用的核對,是把来源、解析和行為放在一起看。

第一层:UA 與来源 IP 的组合

  • 搜尋引擎蜘蛛的 UA 通常带有标识和版本号,但格式並不完全固定,不能只靠關鍵詞匹配。
  • 同一個 IP 在短時間内切換多種 UA,通常不是正常蜘蛛的行為。
  • 来源 IP 段與 UA 之間,一般存在可對應的归属關系。

反向解析的做法

對訪問 IP 做反向 DNS 查询,看返回域名是否属于搜尋引擎的官方域。拿到域名後再做一次正向解析,確認它回到同一個 IP。只有正反双向一致,身份判断才比較可靠。只做反向解析容易被伪造的 PTR 记錄骗過。

IP 段归属核對

主流搜尋引擎會公布自己的抓取 IP 段,並定期更新。把這些網段整理成清單,與日誌中的来源 IP 做比對,是成本較低的一步。需要注意的是,網段會變,清單要定期复核,拿一份過期的列表去封禁,反而可能挡住真實抓取。

第二层:行為特征

抓取频次與並發

真實蜘蛛的频次與站点規模、更新频率大致相關,並發也有上限。某個 IP 在几分钟内连續請求几千次、並發遠高于正常水平,就值得多看一眼。

抓取路径與时段

真實蜘蛛的路径通常落在站内連結图、Sitemap 和已知入口之内,表現為從列表頁向内頁扩散。伪装脚本更容易出現掃目錄、试探後台路径、請求不存在文件這類行為。时段上,真實抓取在全天分布相對平稳,異常脚本則可能在深夜集中放量。

與 robots.txt 的配合

正規蜘蛛會讀取 robots.txt。可以在服務器侧單獨记錄 robots.txt 的請求来源,观察哪些 IP 在抓取前先来取規則文件。這個信号只能作為參考,不能單獨定论,但和其他线索叠加时很有用。同时也要確認自己的 robots.txt 没有把真實蜘蛛需要抓取的路径挡住。

日誌采样與統計

  1. 按 IP 聚合請求量,找出量級明顯偏高或偏低的来源。
  2. 把 UA、請求路径、狀態碼交叉起来看,而不是分字段單獨統計。
  3. 用 Sitemap 和已知内鏈集合做對照,看請求的 URL 是否有對應入口。
  4. 對可疑 IP 抽样做反向解析,不必全量處理。

處置顺序

  • 不要僅凭 UA 就下封禁决定。
  • 確認是伪装爬虫後,優先在 WAF 或服務器层面限速,而不是直接整体拒绝。
  • 對真實蜘蛛保持稳定响應,避免 5xx、超时和频繁重定向。
  • 保留一段時間的日誌,便于狀態變化後回溯。
核對身份的目的,是搞清楚服務器资源被谁消耗、抓取节奏是否受影响,而不是把所有非搜尋引擎流量一律拦掉。

小结

UA、反向解析、IP 段归属和行為特征,單獨看都只是线索,组合起来才能形成相對可靠的判断。把這套核對做成定期動作,服務器波動或抓取異常时,排查會快很多,也不容易因為一次誤封而影响 URL 發現。