蜘蛛池執行一段時間後,日誌里會出現各色訪問者:有的带着 Googlebot、Bingbot、YandexBot 的 UA,有的只留一個空 UA,還有的 UA 看起来像浏览器但請求路径又很奇怪。如果把這些請求全部算成“蜘蛛抓取”,後續關于抓取效率、入口頁健康度的判断都會偏。所以第一步不是加量,而是先分清楚谁是真蜘蛛。
為什么 UA 不能作為唯一依據
UA 字符串是請求方自己寫的,改起来几乎没有成本。一段几十行的脚本,就能把 UA 伪装成主流搜尋引擎。反過来说,一些正常的抓取工具也可能用非主流 UA。因此 UA 只能当初步篩選條件,不能当结论。
比較稳妥的做法是把核驗拆成三层:請求头、IP 與網絡归属、訪問行為。三层都對得上,才归為高可信;只有一层對得上,就先放進“待观察”。
第一层:請求头里的信号
- UA 是否完整:主流搜尋引擎的 UA 通常结构完整,带版本與平台信息。只寫“Googlebot”几個字母的,多半是伪造。
- Accept、Accept-Encoding 是否稳定:真實蜘蛛的請求头相對固定,如果每次都不一样,值得留意。
- 是否請求 robots.txt:正規蜘蛛在抓取新站点前通常會讀一次;完全不讀、並且明顯無视規則的,可信度會下降。
第二层:IP 與網絡归属
UA 可以伪造,IP 想長期伪装成搜尋引擎官方出口却很难。核驗时通常看這几点:
- 反向 DNS 反查:對訪問 IP 做 PTR 查询,看域名是否落在搜尋引擎自己的域里,再做一次正向解析確認能對上。
- ASN 與官方 IP 段:主流搜尋引擎會公布自家爬虫的 IP 段,可以定期比對;不在名單里的,先标注為待確認。
- 归属地:如果訪問 IP 的归属地和你投放的语種市场長期不匹配,可以留意,但不要僅凭這一点下结论。
第三层:訪問行為
- 抓取节奏:真蜘蛛通常有相對稳定的並發與間隔,不會在几秒内把入口頁刷几百次。
- 請求路径:真蜘蛛會顺着連結层层往下走;假流量往往只盯着少數几個固定 URL。
- 资源請求:部分搜尋引擎會连带抓取頁面里的 CSS、JS、图片。完全不請求任何资源的,可信度略低。
- Referer 與 Cookie:蜘蛛一般不带 Referer,也不保留會话 Cookie。带着完整會话信息的請求,多半不是蜘蛛。
容易踩的三個誤判
把資料中心 IP 一概当成假蜘蛛
很多搜尋引擎的爬虫本身就部署在資料中心,而不是住宅宽带。只看“是不是机房 IP”,會誤伤大量真實抓取。
把低频訪問当成假蜘蛛
新入口頁、新域名在前几天抓取量本来就不高。低频不等于伪造,要结合 IP 和請求路径一起看。
把某個 UA 当成唯一真身
搜尋引擎會同时使用桌面、移動、图片、新闻等多個爬虫 UA。只認一個,會把其他正常抓取排除在外。
把核驗寫進日誌和看板
- 日誌里固定记錄:完整 UA、IP、請求路径、狀態碼、响應時間、是否請求 robots.txt。
- 每天跑一次 IP 名單比對,把請求分成“高可信”“待观察”“疑似伪造”三類。
- 看板上分別統計三類的請求量,而不是只統計一個總數。
- 当“疑似伪造”數量突然上升时,先看入口頁是否被第三方镜像或公開采集,再考虑技術层面處理。
核驗的目的是让資料更接近真實,而不是追求一份绝對干净的名單。任何單一信号都可能有例外,把多個信号叠加起来看,判断才稳。
分完之後怎么用
高可信的抓取量,可以用来判断入口頁是否被正常發現;待观察的部分,可以單獨建一组入口頁做對比;疑似伪造的流量,更适合從限速、人机校驗等角度去處理,而不是直接当成抓取成绩。把這三類分開看,蜘蛛池的运营决策才不會建立在一個被放大的數字上。