很多人看蜘蛛池里入口頁的訪問日誌时,只盯着一栏:UA 里有没有出現搜尋引擎的名字。只要對上,就当成真蜘蛛,然後開始判断入口頁质量好不好、抓取是不是變多了。問题是 UA 由請求方自己填寫,伪装成本极低。如果入口頁還要承担评估抓取情况的作用,先做一层身份核驗,比後面調结构、換模板都更划算。
一、為什么先核驗,再谈抓取資料
入口頁日誌里通常混着三類流量:真搜尋引擎蜘蛛、各種爬虫工具與采集脚本、以及带着蜘蛛 UA 的普通請求。三類流量在日誌里長得几乎一样,含义却完全不同:真蜘蛛来得多,說明路径至少被發現了;脚本刷出来的“蜘蛛”,只會让統計數字好看,還會誤導後續判断。
先核驗身份,至少解决两個問题:一是抓取量、重訪間隔這些指标不被注水;二是当某個 IP 段持續高並發請求时,能分清是正常抓取還是骚扰。
二、三條可以交叉驗證的线索
UA 字符串:只作初筛
UA 是线索,不是證據。它可以被任意构造,连版本号和系統信息都能照抄。實践上建议把 UA 当作第一层過滤:先按關鍵詞分成 Googlebot、Baiduspider、bingbot、YandexBot 等几组,再進入下一步核驗。
IP 归属與 ASN:看請求從哪来
搜尋引擎的抓取 IP 通常来自相對固定的網段。把日誌里的来源 IP 做一次归属查询,看 ASN 與运营商是否符合對應搜尋引擎的特征,能筛掉大部分明顯不對的請求。有两点要注意:同一搜尋引擎可能有多段 IP,不要只認一段;也不要因為归属地不在某個國家就直接判定為假,CDN 與云服務會让归属信息失真。
反向解析加正向回查:成本最高,也最靠得住
對支持反向 DNS 驗證的蜘蛛,可以做两步:先對来源 IP 做反向解析得到主机名,再對该主机名做正向解析,看是否回到同一個 IP。两步都吻合,可信度才高。國内搜尋引擎不一定提供同样机制,這时更多依赖官方公布的 IP 段列表来比對。
三、一個可落地的核驗流程
- 日誌预處理:把入口頁訪問日誌按 UA 關鍵詞分组,标出疑似搜尋引擎的請求。
- IP 比對:與官方 IP 段列表或已知網段比對,标记命中與未命中。
- 反向解析:對未命中但 UA 可信的 IP,做反向與正向解析驗證。
- 行為观察:看請求频率、路径分布、是否加载静態资源。真蜘蛛通常有一定节奏,也會带走頁面里的资源;脚本常常只抓 HTML,频率還異常集中。
- 归档复用:把確認過的 IP 段存成白名單,後續日誌分析直接引用,减少重复劳動。
四、容易誤判的几種情况
- 只按 UA 判断:把带蜘蛛字样的請求全部算作抓取,指标虚高。
- 只按 IP 判断:搜尋引擎扩容新網段後,舊列表會漏判,把真蜘蛛当成假的。
- 忽略静態资源:有些蜘蛛抓完 HTML 不一定會立刻抓 CSS 和 JS,不能只凭這一点判假。
- 把移動 UA 当異常:移動版蜘蛛的 UA 與桌面版不同,属于正常現象。
- 把集中請求一律当攻击:入口頁之間連結密集时,短時間内的集中抓取也可能来自真蜘蛛。
五、核驗之後怎么用
核驗结果主要用在三件事上:一是让抓取統計回到真實水平,避免拿注水資料做决策;二是识別出持續高频的伪装請求,必要时在服務器或防護层做限制;三是把確認過的網段白名單化,方便後續分析重訪率、抓取深度這類指标。
需要提醒的是,核驗只能回答“這次請求是不是搜尋引擎蜘蛛”,回答不了“這個頁面會不會被收錄”。收錄與排名還取决于内容质量、站点整体情况等因素,没有哪種技術手段可以替代這一层。
把 UA 当入口、把 IP 和解析当驗證、把訪問行為当补充,三层交叉基本够用;單看任何一层,都容易得出相反结论。