入口頁跑起来之後,日誌里會出現大量自称蜘蛛的訪問。這里面既有真正的搜尋引擎爬虫,也有掃描器、采集程序和刷量工具。如果不做区分,你會把垃圾請求当成抓取正常,也可能把真蜘蛛誤封。真假蜘蛛的识別不需要多复杂,關键是分层次驗證,別只看一個字段。
為什么入口頁最需要這一步
入口頁通常數量多、内容薄、外鏈来源杂,本身就是掃描器和采集器的重点目标。它又承担着引導蜘蛛繼續爬的任務,一旦判断失誤,代價是双向的:把假蜘蛛当成真的,服務器资源和抓取预算都浪費在無效請求上;把真蜘蛛当成假的,入口頁就失去了存在的意义。
三层判断法
第一层:UA 字符串只做初筛
- UA 可以随意伪造,所以它只能用来分层,不能作為判断依據。
- 對照各引擎官方公布的 UA 列表,注意版本号和平台字段的寫法是否一致。
- 常见破绽:UA 声明了較新的版本,但請求头其他字段跟不上;UA 與請求头整体風格矛盾。
第二层:IP 反查才是關键
把訪問 IP 做反向 DNS 解析,再正向解析回去,確認主机名落在搜尋引擎官方網段,是相對可靠的驗證方式。同时用公開的 IP 段清單做比對,注意百度、Google、必應、Yandex 等不同引擎的網段是分開维護的,並且會更新。
- 记錄訪問 IP,做反向解析,得到主机名。
- 對主机名做正向解析,確認能回到同一個 IP。
- 比對官方公布的網段清單,確認归属。
- 三步都通過,才按真蜘蛛處理。
這個流程可以在服務器或 CDN 层實时做,也可以在日誌分析环节离线做。离线做成本更低,适合先观察一段時間再决定要不要拦。
第三层:看訪問行為
- 真蜘蛛一般按一定节奏抓取,短期内的請求量相對平稳;掃描器往往在几秒内掃完大量 URL。
- 真蜘蛛會讀 robots、會跟随頁面里的連結;采集器常常只盯着特定後缀或參數。
- 真蜘蛛對 404、301 的處理有規律;假蜘蛛经常忽略狀態碼,反复請求同一批死鏈。
- 並發连接數和請求头完整度也能作為參考,头部字段缺失或顺序異常的,多半不是。
容易誤判的几種情况
- 只按 UA 判断:改一個字符串就能骗過整套規則。
- 只按 IP 判断:部分引擎會经過 CDN 或代理节点,網段會變,清單需要定期更新。
- 用拦截代替识別:一上来就全量封禁,可能封掉真蜘蛛的备用节点。
- 把慢速抓取当成異常:有些引擎的抓取频率本身就低,属于正常表現。
识別出来之後怎么處理
建议先记錄、後處置。日誌里把每次訪問标记為真、假、待定三類,观察一两周再决定策略。對確認的假蜘蛛,可以用限速、返回 403 或直接断開连接;對真蜘蛛,保證响應速度和稳定可用比什么都重要。
入口頁的價值不在被訪問了多少次,而在被正确的爬虫按正常节奏訪問。判断真假的目的,是让资源用在有效抓取上。
落地建议
- 日誌至少保留 UA、IP、時間、URL、狀態碼、响應時間六個字段。
- 建立自己的可信 IP 段清單,每月更新一次。
- 服務器或 WAF 层先只做限速,不做全量封禁。
- 定期抽样人工核對,避免規則長期跑偏。