搜尋抓取

怎么確認来的是真蜘蛛:User-Agent、反向解析與日誌核對

日誌里带 Googlebot 字样的請求,不一定来自搜尋蜘蛛。本文给出從 User-Agent 初筛、反向 DNS 双向驗證、官方 IP 段兜底到日誌行為交叉核對的完整流程,並說明誤封真蜘蛛可能带来的抓取频次下降,以及放行與拦截規則该怎么配才稳妥。

搜尋抓取

怎么確認来的是真蜘蛛:User-Agent、反向解析與日誌核對

日誌里出現带 Googlebot 字样的請求,並不等于蜘蛛真的来了。User-Agent 是一段客戶端自报的字符串,任何脚本都能照抄。把假蜘蛛当成真蜘蛛,會浪費服務器资源;把真蜘蛛当成假蜘蛛挡掉,則可能让 URL 發現變慢,新頁面迟迟不被抓取。下面這套流程,目的是在不誤伤的前提下把两類請求分開。

一、先明确要解决什么問题

  • 服務器资源被盗刷:假蜘蛛高频抓取,尤其是搜尋頁、篩選參數頁這類動態地址。
  • 真蜘蛛被誤封:防火墙按 UA 關键字拦截,或按频率限速過嚴,導致整体抓取量下降。
  • 資料判断失真:把假蜘蛛寫進抓取频次报表,得出的结论是错的。
  • 放行規則失效:robots.txt 和 WAF 白名單本来是给真蜘蛛配的,来源認错了,整套策略都會偏。

二、User-Agent 只能当第一道筛子

UA 是請求头里的自述信息,伪造成本极低,可以用来快速分流,但不能單獨作為判定依據。常见的寫法包括 Googlebot、bingbot、Baiduspider 等,但版本号和平台部分會變,不建议寫一段固定字符串做精确匹配,也不要用 bot 這種宽泛關鍵詞一刀切,會誤伤正常工具和訪客。

更稳的做法是:先按 UA 把請求分成“需要進一步驗證”的一堆,再用下面的方法確認。

三、反向 DNS 驗證

主流搜尋引擎都公開了驗證方法,核心是双向解析,顺序不能反。

  1. 反向解析:拿請求来源 IP 做 PTR 查询,得到主机名。
  2. 检查域名後缀:Google 的應以 googlebot.com 或 google.com 结尾,Bing 的為 search.msn.com。
  3. 正向解析:把上一步得到的主机名再做一次 A/AAAA 查询,看是否解析回原始 IP。
  4. 两者一致才認;不一致时再用原 IP 去比對官方 IP 段。

先看正向再看反向,容易被伪造的域名绕過去,因此顺序很重要。

四、官方 IP 段列表做兜底

Google、Bing 等會發布可下载的 IP 段文件,格式常见為 JSON 或纯文本。把這些列表定期同步到服務器或 CDN 的規則里,可以在反向解析失敗(例如 DNS 超时)时提供第二层判断。列表會更新,建议按天或按周自動拉取,不要手工维護一份静態清單。

五、用日誌和行為特征交叉驗證

  • 請求节奏:真蜘蛛频率相對稳定,並受抓取预算约束;假蜘蛛常表現為突發高频或固定間隔的机械請求。
  • 路径分布:真蜘蛛會按連結關系走,同时請求 robots.txt、Sitemap;假蜘蛛往往只盯少數頁面,比如價格頁或搜尋接口。
  • 請求头:真蜘蛛一般不携带来源頁 Referer,伪造者常留下浏览器風格的完整头部组合。
  • 對响應碼的反應:遇到 5xx,真蜘蛛會退避,假蜘蛛通常照抓不誤。

六、確認之後怎么用

分清真伪之後,才能决定放行與拦截。真蜘蛛给稳定带宽和正常响應速度,Sitemap 與内鏈保持可訪問;假蜘蛛按普通訪客或黑名單處理。需要注意,對真蜘蛛返回 403、429 或長時間 5xx,會直接影响後續抓取频次,而且恢复通常比降速更慢。

落地检查清單

  • 按 UA 統計日誌中的 Top IP,人工抽查几條做反向 DNS。
  • 把官方 IP 段接入防火墙或 CDN 白名單,並設定自動更新。
  • 對可疑高频 IP 做限速,而不是直接封掉整個 UA 關键字。
  • 定期查看蜘蛛的响應碼分布,確認没有大面积 403、5xx。
  • 保持 robots.txt 和 Sitemap 可公開訪問,避免驗證規則把真蜘蛛挡在外面。
判断蜘蛛真假的目的,不是做一份完美名單,而是让真蜘蛛顺畅走完發現和抓取流程,同时不让伪造流量掏空服務器。

這套流程不需要很复杂的基础设施,一段脚本加一份定期同步的 IP 列表通常就够了。關键是別把 UA 当成唯一證據,也別在没驗證之前就把带 bot 字样的請求全部拒掉。