做蜘蛛池的人经常看日誌,但很多人看日誌的方式只有一個動作:在訪問记錄里搜“spider”“bot”這類關鍵詞,然後把带這些字样的訪問全部算成搜尋蜘蛛。结果是入口頁的抓取數字看起来很漂亮,實际却没有多少條来自真實搜尋引擎的抓取。
為什么 UA 不能直接信
User-Agent 是請求方自己填的字段,任何人都能把它改成 Googlebot 或 Baiduspider。也就是说,日誌出現“Googlebot”字样,只能說明有人這么寫了,不能說明它真是 Google 的抓取程序。判断真假,要看来源 IP 及其归属,而不是看字符串。
三個可以落地的驗證步骤
- 反向 DNS 解析。對訪問 IP 做 PTR 查询,Googlebot 的解析结果通常以 googlebot.com 或 google.com 结尾,百度蜘蛛一般是 baiduspider-xx.xx.baidu.com 這類形式。查到域名後,再對该域名做一次正向解析,確認能回到原来的 IP,這一步就能過滤掉绝大多數伪造。
- 核對官方抓取 IP 段。搜尋引擎會公布自己的抓取 IP 范围,把日誌里的 IP 和官方列表比對,比只看 UA 可靠得多。這種方法對批量日誌也容易實現,适合定期跑一次。
- 看行為特征。真蜘蛛通常會請求 robots.txt,抓取速度相對克制,請求的 UA 與 IP 归属一致;伪装爬虫往往只抓頁面不讀 robots,並發高、频率整齐、路径集中在少數几個連結上。
容易被誤判的几種情况
- CDN 或 WAF 回源。源站日誌里可能只看到 CDN 节点 IP,真實蜘蛛 IP 被放在 X-Forwarded-For 一類的头里。只看 REMOTE_ADDR,會把所有真蜘蛛都認成假的。
- 同一種蜘蛛有多個 UA 變体。图片、新闻、移動渲染等抓取往往使用不同的 UA 字符串,規則里只寫一個關鍵詞會漏統計。
- 反向解析查不到不等于假冒。部分 IP 段本身没有 PTR 记錄,DNS 临时故障也會導致查询失敗。遇到這種情况建议隔一段時間复测,再决定是否拦截。
- 只按單個 IP 封禁。真實抓取會從多個 IP 轮換,一刀切封段可能誤伤,也會让後續判断失去样本。
分不清真假會带来什么後果
把真蜘蛛当成假蜘蛛封掉,入口頁的連結就不會被發現,目标 URL 也就少了一條被發現路径;反過来把伪装爬虫当成真蜘蛛,會让你誤以為入口頁已经被搜尋引擎大量抓取,從而错誤調整更新和提交节奏。两種偏差都會影响站点运营的判断,而且往往要過很久才會暴露。
建议的日誌观察清單
- 记錄時間、IP、UA、請求路径、狀態碼、响應時間這几個基础字段。
- 按 IP 聚合訪問频次,先找出高频且路径單一的来源。
- 對可疑 IP 依次做 PTR 查询、正向校驗、官方 IP 段比對。
- 對確認的真蜘蛛單獨統計入口頁抓取次數和返回狀態碼,观察入口頁本身是否正常响應。
日誌能告诉你“谁来過”,但不能告诉你“會不會收錄”。把它当作排查工具,而不是结果指标。
小结
分辨真假搜尋蜘蛛,本质上是一個核對来源的過程:先解析 IP,再核對官方段,最後看行為是否自洽。別用 UA 關鍵詞做統計口径,也別把 CDN 日誌当源站日誌。只有先確認来訪者是谁,後續關于入口頁抓取频率、連結發現节奏的判断才有意义。