搜尋抓取

如何確認来的是搜尋蜘蛛:User-Agent、反向 DNS 與 IP 核對

抓取日誌里出現搜尋蜘蛛的 User-Agent,並不代表請求一定来自搜尋引擎。本文介绍如何用反向 DNS、IP 段核對和日誌特征辅助驗證,說明只看 UA 的風險、誤封真蜘蛛的代價,以及白名單配置和 CDN 场景下的注意点。

搜尋抓取

如何確認来的是搜尋蜘蛛:User-Agent、反向 DNS 與 IP 核對

抓取日誌里出現一批 User-Agent 寫着 Googlebot、Bingbot 的請求,並不代表它們都是真的。User-Agent 只是請求头里的一段文本,任何脚本都能伪造。要判断来訪者是不是搜尋蜘蛛,通常需要把 User-Agent、反向 DNS、IP 段核對组合起来看。

只看 User-Agent 為什么不够

User-Agent 是最容易被模仿的信号。伪装爬虫可能用搜尋引擎的 UA 来抓取内容、探测後台或消耗服務器资源。反過来,真蜘蛛偶尔也會因為代理、中間层或版本更新,让 UA 看起来和常见值略有差异。只凭 UA 放行或拦截,誤判概率都不低。

反向 DNS 驗證的常见做法

反向 DNS 是較常用的一层驗證:先對来源 IP 做 PTR 查询,看它解析出的域名是否属于搜尋引擎官方域;再把该域名做一次正向解析,確認它指回同一個 IP。只有正反一致,才能作為較强的證據。

  1. 拿到訪問日誌中的来源 IP。
  2. 查询 PTR 记錄,得到候選主机名。
  3. 检查主机名後缀是否在官方域内,例如 googlebot.com、google.com、search.msn.com 等。
  4. 對候選主机名做正向解析,核對 IP 是否與来源 IP 相同。

注意,PTR 记錄本身可以配置,所以不能只做反向查询就放行。正向核對這一步很關键。

IP 段核對與官方列表

主流搜尋引擎會公布自己的抓取 IP 段,格式可能是 JSON 或文本列表。可以把這些段導入防火墙或應用层規則,作為辅助判断。要注意两点:一是官方列表會更新,需要定期同步;二是经過 CDN、反向代理或云服務轉發的請求,源站看到的 IP 可能不是蜘蛛真實 IP,這时要结合轉發头或邊缘日誌判断。

日誌里怎么落地排查

建议在日誌中保留来源 IP、User-Agent、反向解析结果、請求路径、狀態碼和响應時間。按小时或按路径聚合後,更容易看出異常:同一個 IP 在短時間内大量請求、反向解析與官方域不符、频繁訪問後台或參數連結,都值得進一步核實。但不要只凭單一特征直接封禁,先做灰度观察。

誤封真蜘蛛的代價

真蜘蛛被持續返回 403、429 或连接超时後,抓取频率可能下降,恢复也需要時間。對依赖搜尋流量的站点来说,這會影响新 URL 的發現和舊頁面的更新检查。如果只是怀疑,可以先用較低频率限制或驗證碼挑战,而不是一刀切拦截整個網段。

放行假爬虫的風險

假蜘蛛如果被当成真蜘蛛放行,可能大量消耗带宽和資料库资源,甚至抓取到本不该公開的頁面。除了身份驗證,還可以配合速率限制、訪問路径規則和行為特征来区分:正常蜘蛛通常有較稳定的抓取节奏,不會集中請求登入頁、支付頁或漏洞探测路径。

配置白名單时的几個注意点

  • 反向 DNS 结果可能被缓存,更新官方域後要留出生效時間。
  • 使用 CDN 时,源站防火墙不要直接按来源 IP 判断,先確認真實 IP 的获取方式。
  • 不要把規則寫死到單個 IP,搜尋引擎的抓取节点會變化。
  • 定期核對官方 IP 段和反向 DNS 域列表,避免規則過期。
  • 邊缘层和應用层的驗證逻辑尽量一致,否則會出現同一請求两處判断不同。

驗證蜘蛛身份不是一次配置就結束。把日誌观察、官方列表和反向 DNS 核對结合起来,定期复核,才能在减少誤封的同时,降低伪装爬虫带来的干扰。