蜘蛛池入口頁的訪問日誌里,出現一個 UA 寫着 Googlebot 的請求,並不代表它真的来自 Google。采集程序、掃描器、竞争监控工具都可以把 UA 改成常见蜘蛛标识。如果直接把所有带蜘蛛 UA 的請求都算作搜尋蜘蛛,入口頁的抓取資料就會虚高,後續調整入口頁數量、更新节奏和目标連結时容易做出错誤判断。
為什么只看 UA 不够
UA 字符串是客戶端自己寫的,伪造成本极低。很多采集工具和站点掃描器預設就會带上一串常见蜘蛛 UA,甚至同时带上多個搜尋蜘蛛标识。因此,UA 只能作為第一层初筛,不能作為最终结论。
第一层:UA 字符串的静態检查
- 是否包含完整的蜘蛛标识,而不是只出現一個單词片段。
- 版本号格式是否符合该搜尋引擎的常见寫法。
- 是否同时出現多個搜尋引擎的蜘蛛标识,這種通常可疑。
- UA 後面是否带有異常後缀、随机字符串或明顯工具名稱。
静態检查能過滤掉一部分低质量伪造,但無法区分“改了 UA 的采集器”和“真實蜘蛛”。
第二层:反向 DNS 與 IP 归属
Googlebot 和 Bingbot 都提供了官方驗證思路:先對訪問 IP 做反向 DNS 查询,拿到域名後再做一次正向解析,確認结果與原始 IP 一致,並核對 IP 段是否属于该搜尋引擎。這個流程可以挡住大部分简單伪造。
- 查 IP 的 PTR 记錄,看是否指向官方域名。
- 對返回的域名做正向解析,確認能回到同一個 IP。
- 核對 IP 段是否在搜尋引擎公布的范围内。
- 没有公開 IP 段的搜尋引擎,只能结合行為特征判断。
反向 DNS 不是萬能的,云服務器、CDN 回源、代理都可能让结果看起来不像蜘蛛。遇到不确定的 IP,先记錄,不要急着封。
第三层:行為特征
- 抓取频率是否在短時間内異常高,且集中在少數 URL。
- 是否只抓目标頁面,完全不請求頁面内的静態资源。
- 是否明顯忽略 robots.txt 中的限制。
- 是否大量請求不存在的頁面,或反复請求同一路径。
- 並發连接數是否遠超正常蜘蛛的常见范围。
真實蜘蛛通常有相對稳定的抓取频次,會抓取頁面内资源,也會在多數情况下遵循 robots 規則。行為特征不正常的請求,即使 UA 和 IP 看起来像,也值得進一步观察。
交叉驗證的落地做法
- 先按 UA 分组,把自称蜘蛛的請求單獨拉出来。
- 對高频 IP 做反向 DNS 和正向解析驗證。
- 對無法驗證的 IP 观察一到两周的行為,看抓取路径和频率。
- 把驗證结果记錄到日誌看板,形成自己的白名單和灰名單。
- 定期更新搜尋引擎公布的 IP 段,避免舊名單失效。
不要凭單次請求就下结论,按天或按周看,誤判會少很多。
常见誤判與處理建议
- CDN 回源 IP 被当成假蜘蛛:回源請求可能带蜘蛛 UA,但来源 IP 是 CDN 节点。
- 移動端蜘蛛 UA 變化:同一搜尋引擎的移動蜘蛛 UA 與桌面版不同,需要分開记錄。
- 新版本蜘蛛 UA 調整:搜尋引擎偶尔會改 UA 格式,舊規則可能誤杀。
- 云服務商 IP 被誤封:部分搜尋引擎使用云服務,直接封 IP 段可能誤伤。
识別的目的是减少噪声,而不是封禁所有可疑請求。入口頁本身是给蜘蛛看的,過度封禁可能把真實抓取也挡在外面。
對蜘蛛池运营的意义
真實蜘蛛的抓取資料會影响入口頁的數量規划、更新节奏和目标連結調整。如果日誌里假蜘蛛占比很高,只看總請求數容易高估入口頁效果,也容易誤判哪些入口頁被搜尋引擎重视。把真伪识別结果用于過滤和观察,而不是追求百分之百准确,會更實际。
建议先在小范围入口頁上做驗證,跑通 UA、反向 DNS 和行為观察的流程,再逐步形成自己的 IP 與 UA 白名單。這样後續看抓取資料时,心里會更有底。