做蜘蛛池和入口頁运营时,日誌里出現大量带 spider 字样的 User-Agent 是常態。但 UA 只是一個請求头字符串,任何人用 curl 都能寫成 Googlebot。把假蜘蛛当成真蜘蛛,容易誤判抓取效果;把真蜘蛛当成攻击拦掉,又會白白损失目标 URL 的發現机會。下面是一套從日誌出發、按顺序做的甄別方法。
為什么不能只看 User-Agent
只看 UA 會带来两個方向的麻烦:一是把掃描器当成抓取来源,誤以為入口頁“被蜘蛛訪問過了”;二是把限速策略套到真蜘蛛身上,影响入口頁被正常抓取的频率。判断抓取来源,要看 IP 和行為,UA 只能作為一個辅助字段。
需要說明的是:驗證通過只說明“這是官方蜘蛛發出的請求”,並不代表目标 URL 一定會被抓、被收錄。驗證的意义在于区分流量来源,不是效果承诺。
第一步:反向 DNS 解析,再做正向核對
主流搜尋引擎的官方蜘蛛,基本都可以用“反向解析 + 正向回查”来確認身份:
- 取日誌里的客戶端 IP,做反向 DNS 解析,得到主机名。
- 再用這個主机名做一次正向解析,看返回的 IP 列表里是否包含原来的 IP。
- 检查主机名的域名後缀是否符合官方規則。
常见後缀:Googlebot 為 googlebot.com 或 googleusercontent.com;Bingbot 為 search.msn.com;百度、搜狗、360 等也有各自的官方域名段,可以直接在對應搜尋资源平台的帮助文档里查到。只做反向解析、不做正向核對,是常见的错誤——伪造一條 PTR 记錄並不困难。
第二步:對照官方 IP 段列表
Google、Bing、百度、Yandex 等都會公布蜘蛛使用的 IP 段,部分還提供 JSON 文件供程序化拉取。做法是把日誌里的 IP 與官方列表做匹配:
- 命中的,基本可以確認為官方蜘蛛;
- 不命中的,先不要直接封,繼續看後面几步。
這里要注意 IPv6 容易被忽略。不少站点只匹配了 IPv4 段,结果来自 IPv6 的官方抓取被当成了陌生流量。
第三步:看行為,而不是看名字
真蜘蛛和伪装者在抓取行為上通常有明顯差异:
- 路径分布:搜尋蜘蛛一般按連結结构逐层铺開,會抓入口頁、列表頁、詳情頁;假蜘蛛往往集中打登入頁、後台地址、配置文件和采集接口。
- 频率與並發:伪装者常在短時間内高频請求同一批 URL,間隔没有規律。
- 头部完整度:官方蜘蛛的 Accept、Accept-Encoding 等头部比較規范,UA 版本号會随實际版本更新;伪造 UA 常出現版本号長期不變或格式残缺。
- 是否回訪:官方蜘蛛會在較長時間内多次回訪同一站点;一次性刷完就消失的,多數不是。
第四步:確認你看到的是真實客戶端 IP
如果站点前面有 CDN 或反向代理,日誌里记錄的可能是节点 IP,直接拿它做驗證會得出错誤结论。這时要先確認日誌格式,取真實客戶端 IP(通常是 X-Forwarded-For 中最左侧的那個地址),再做解析和核對。否則會出現“官方蜘蛛 IP 全部不匹配”的假象。
誤判之後容易踩的坑
- 把官方蜘蛛封掉,入口頁長期没有正常抓取记錄,却以為是蜘蛛池本身没效果。
- 把伪装流量当成抓取量,誤判入口頁已被大量發現。
- 只驗證一次就長期沿用,而官方 IP 段是會變化的,需要定期更新核對列表。
一個可执行的核對顺序
- 確認日誌字段完整:客戶端真實 IP、UA、時間、請求 URL、狀態碼。
- 對 UA 含蜘蛛字样的 IP 做反向解析,並正向核對主机名。
- 與官方 IP 段列表比對,注意不要漏掉 IPv6。
- 對未命中的 IP,查看路径分布、請求频率和回訪情况。
- 確認為伪装流量的,按普通訪問者處理(限速、拦截、加驗證),不要和蜘蛛策略混在一起。
把這几步做成固定流程之後,入口頁的抓取记錄才具备參考價值。後續無论是排查目标 URL 為什么一直没動静,還是調整入口頁的連結结构,判断依據都會清楚很多。