给蜘蛛池挂上入口頁之後,很多人第一件事就是看日誌:訪問量涨了,心里就踏實了。但日誌里的高频訪問並不等于搜尋蜘蛛来了。UA 里寫着 Googlebot、Bingbot 的請求,可能是真的搜尋引擎,也可能是采集程序、掃描器,甚至是別人套用的蜘蛛池脚本。判断错方向,後面所有關于 URL 發現和收錄的分析都會跑偏。
為什么不能只看 User-Agent
UA 只是一段普通的請求头,谁都能改。把 UA 改成 Googlebot 只要一行代碼。所以日誌里出現“Googlebot”,只說明“有個客戶端自称是 Googlebot”,並不說明它真的来自搜尋引擎。
三個可以交叉驗證的信号
1. 反向 DNS 與官方 IP 段
主流搜尋引擎都公布了爬虫 IP 段和反查方式。做法是拿日誌里的 IP 做反向 DNS,看域名是否落在官方域,再正向解析一次確認能對上,最後核對是否在官方公布的 IP 段内。三步都對上,才基本可信。
- 只做反向 DNS 不做事後正查,容易被伪造的 PTR 骗過
- IP 归属地、ASN 只能作為參考,不能單獨作為依據
- 站点前面有 CDN 时,日誌里看到的可能是 CDN 回源 IP,需要先在 CDN 後台取真實客戶端 IP
2. 請求行為特征
真蜘蛛的行為通常比較“守規矩”:先看 robots.txt,按一定間隔抓取,不會在几秒内把整站刷一遍,也不會去請求明顯無意义的路径,比如後台地址、配置文件、登入頁。
- 是否請求過 /robots.txt
- 單 IP 單位時間的請求量是否異常集中
- 是否大量請求不存在或敏感的路径
- 是否带完整的 Accept、Accept-Encoding 等常規头
3. 是否會加载静態资源
部分搜尋引擎會执行 JS 並請求 CSS、图片等资源,而多數简單采集脚本只取 HTML。這個信号不是绝對标准,有些真蜘蛛也不加载资源,但可以作為一個辅助维度。
几個容易踩的坑
- 只按 UA 判断,把采集器当成搜尋蜘蛛,于是誤以為“入口頁生效了”
- 反過来只看請求频率,把正常抓取当成攻击,把真蜘蛛挡在门外
- 忽略了 CDN、负载均衡、反向代理,日誌里全是内網或回源 IP
- 把某個熟悉的 IP 当成“一直以来的蜘蛛”,從不复核
一套可执行的判断顺序
- 從日誌里提取高频 IP 和對應 UA,按請求數排序
- 對可疑 IP 做反向 DNS,再正向解析核對,最後比對官方 IP 段
- 看它是否請求 robots.txt、抓取节奏是否規律、路径是否合理
- 對照 CDN 或服務器上记錄的真實客戶端 IP 再確認一次
- 確認為真蜘蛛的,记錄其抓取的目标 URL 分布;確認為伪装的,按防爬策略處理
判断完之後该做什么
如果確認是搜尋蜘蛛,重点看两件事:一是它有没有真的抓到入口頁里的目标 URL,二是目标 URL 的抓取是否稳定、有没有大面积报错。入口頁本身被反复抓、目标 URL 却一直没動静,多半是連結形式或跳轉方式的問题,而不是蜘蛛没来。
如果確認是伪装爬虫,它對你的 URL 發現没有任何帮助,但會消耗带宽和服務器资源。處理时要注意:封禁規則宁可窄一点,先按行為特征(例如高频訪問敏感路径)匹配,再考虑按 IP 段處理,避免誤伤真蜘蛛。
判断身份只是第一步。入口頁的價值最终体現在目标 URL 是否被稳定發現和抓取上,日誌里的“訪問量”本身說明不了什么。