入口頁日誌里出現带搜尋蜘蛛 UA 的請求,很多人會直接当成有效抓取。但 User-Agent 只是請求头里的一行字符串,寫采集脚本时照着抄一份並不难。如果不加区分,你可能會根據假資料去調整入口頁结构,越調越偏。
為什么不能只凭 UA 判断
搜尋引擎的蜘蛛 UA 是公開的,任何程序都能声明自己是某個蜘蛛。真正的差別不在“它说自己是谁”,而在“它從哪里来、請求了什么、後續還會不會回来”。前两項可以在日誌里核對,第三項需要拉一段時間的資料才能看出来。
另外,同一台服務器上如果同时挂着入口頁和目标站,假蜘蛛刷出来的請求會占用带宽和连接數,真實蜘蛛的抓取反而可能被拖慢。所以分辨真假不只是統計問题。
確認真實蜘蛛的四步核對
- 反向 DNS 查询:拿日誌里的 IP 做一次反向解析,看解析出的主机名是否符合對應搜尋引擎的命名規則。再正向解析一次,確認和原 IP 一致,避免有人伪造 PTR 记錄。
- 核對 IP 網段:搜尋引擎通常會在官方文档里公布抓取所用的 IP 段或 ASN,把日誌 IP 和這些網段比對,比看 UA 可靠得多。規則會變動,以官方最新說明為准。
- 用官方工具驗證:几家主流搜尋的站長平台都提供抓取驗證入口,輸入 IP 或 URL 就能得到结论,比自己寫正則匹配稳妥。
- 看請求内容:真蜘蛛抓一個頁面时,往往還會請求頁面里引用的 CSS、JS 或图片等资源,也會定期取 robots.txt。一個只抓 HTML、從不碰静態资源的“蜘蛛”,值得多問一句。
入口頁日誌里值得警惕的信号
- 同一個或少數几個 IP 在短時間内把入口頁反复抓取,频率明顯高于正常爬取节奏。
- UA 字符串拼寫有细微错誤,或者版本号停留在很多年前。
- 從不請求 robots.txt,也不抓取頁面里的任何静態资源。
- 只抓固定几條路径,對入口頁上其他連結完全不理。
- 請求集中在某個时段爆發,之後就彻底消失。
這些信号單獨出現不一定說明問题,但几條同时出現时,基本可以按可疑流量處理,先限速、先隔离,再慢慢核對。
真實身份確認後,還要看有没有跟到目标 URL
確認来訪的是真蜘蛛,只解决了“它来過”。對蜘蛛池入口頁来说,更關键的是它有没有沿着入口頁里的連結,請求你真正想让它發現的目标 URL。可以在日誌里按目标 URL 路径筛一遍,看請求時間是否紧跟在入口頁抓取之後,返回碼是不是 200。
- 如果真蜘蛛抓了入口頁却從不跟鏈,先查入口頁連結是否可被抓取、是否被 JS 包裹、是否被 robots 或 meta 規則挡住。
- 如果跟鏈了但目标 URL 返回 301、404、500,問题在目标 URL 本身,不在入口頁。
- 如果抓過一次就不再回訪,记錄間隔時間,观察目标 URL 内容更新後是否有第二次抓取。
日常可以固定下来的几個動作
- 把入口頁訪問日誌按 IP 和 UA 分開統計,別混在一起看趋势。
- 维護一份可信 IP 段清單,定期按官方文档更新。
- 對可疑 IP 限速或临时拦截,同时保留日誌,便于事後判断是否誤伤。
- 记錄真蜘蛛從入口頁到目标 URL 的完整路径,作為评估入口頁是否有效的依據。
来訪量不等于抓取價值。先確認真實身份,再看它是否跟到目标 URL,這两步都做完,入口頁的調整才有依據。