做蜘蛛池的人经常盯日誌看抓取量,但日誌里的 UA 是可以随便寫的。如果不先分辨真假蜘蛛,很容易把掃描器的請求当成搜尋蜘蛛的抓取,進而得出错誤结论:以為入口頁被大量抓取,其實只是被批量掃了一遍。
為什么先要驗證蜘蛛身份
蜘蛛池最常看的指标是抓取频次、抓取頁面數、返回碼分布,這些資料全部来自日誌。一旦日誌里混進伪装 UA 的請求,會出現两類問题:一是高估效果,把掃描流量当成收錄前的正常抓取;二是誤判問题,把掃描器集中請求某個參數当成蜘蛛陷阱,去改本来没有問题的配置。
所以驗證蜘蛛身份不是為了抓假蜘蛛,而是為了让後面的判断建立在干净資料上。
三種常用的驗證手段
1. UA 校驗:成本最低,也最不可靠
爬虫和浏览器一样,會在 User-Agent 里声明自己是谁,例如百度蜘蛛常见标识是 Baiduspider。這一步只能做初筛:UA 匹配不代表一定是真的,UA 不匹配也不代表一定是假的,部分移動端蜘蛛的标识與桌面端並不完全一致。
2. 反向 DNS 與 IP 归属
對訪問 IP 做反向解析,看返回的域名是否属于搜尋引擎官方網段。例如 Googlebot 的反查结果通常以 googlebot.com 或 google.com 结尾。百度也公布了蜘蛛 IP 段,可以定期拉取比對。
起步阶段不寫脚本也能做:把日誌里的 IP 去重,挑出請求量最大的几十個逐個反查;確認方法有效後,再考虑自動化處理。
3. 官方 IP 段比對
主流搜尋引擎會公布爬虫 IP 范围,格式多為 CIDR。把日誌 IP 換算後判断是否落在這些区間内,比反向 DNS 更快,也适合每天跑一次。
注意 IPv6:如果入口頁已经支持 IPv6,日誌里會出現對應的地址,只比對 IPv4 段會把真實抓取漏掉。
常见的几種誤判
- 把 CDN 回源 IP 当成蜘蛛。開啟 CDN 後,日誌里的訪問 IP 可能是节点地址,需要结合轉發头部判断,並確認头部来源是否可信。
- 把探测請求当成蜘蛛。有些工具會模仿 Baiduspider 的 UA 做批量探测,反查 IP 就能区分。
- 把移動端 UA 判成假蜘蛛。移動蜘蛛的标识與桌面端不同,先查清标识再判断。
- 把多机房出口当成異常。同一搜尋引擎可能從多個網段訪問,只凭一次請求判断容易誤伤。
- 長期使用未更新的 IP 列表做過滤,新上线的網段會被漏掉。
驗證结果怎么用
驗證完成後,建议把日誌分成三類:已確認的真實蜘蛛、已確認的非蜘蛛、無法確認。前两類用于統計,第三類單獨观察,不要直接混進抓取量里。
真實抓取資料可以支撑几件事:判断入口頁哪一层被訪問得最多、返回碼是否異常、某個 URL 參數是否被反复抓取。非蜘蛛資料也有參考價值,比如大量掃描集中出現在某個目錄,說明该路径已经暴露,需要评估是否繼續保留。
提醒:驗證只能過滤日誌噪声,不能决定收錄。抓取正常和頁面被收錄是两件事,要分開看。
一個可落地的复核流程
- 日誌保留完整字段:時間、IP、UA、URL、狀態碼、响應時間、来源。
- 每周對高频 IP 做一次反向解析,並比對官方 IP 段。
- 给每個 IP 打标记,存成對照表,後續日誌直接匹配。
- 每月复核一次标记表,删掉失效網段,补上新段。
- 統計时只使用已確認的真實蜘蛛資料,其余單獨归档。
小结
蜘蛛身份识別是蜘蛛池运营里最基础的一步。它本身不产生流量,也不直接带来收錄,但决定了你對入口頁的判断是否可信。先分清谁在抓,再讨论抓得够不够、要不要調整,顺序反了,後面的優化大多是白忙。