看服務器日誌时,很多人會把所有带着蜘蛛 UA 的請求都算作搜尋引擎抓取。實际上這里面混着好几類来源:真的搜尋引擎蜘蛛、第三方 SEO 工具的爬虫、被伪装的采集程序,還有你自己或 CDN 产生的請求。把這個數字直接当成抓取量来下判断,结论往往偏得很遠。
為什么先要分清真假
日誌的用途無非两個:判断收錄進度,看抓取预算花在了哪里。如果假蜘蛛占了三成,你以為蜘蛛天天来,其實真蜘蛛一周才来两次;你以為某個栏目很受重视,其實只是采集站在高频拉取。方向错了,後面所有的調整都容易白費。
三種常用的判断依據
一、UA 字符串:只能做初筛
UA 是最容易看到、也最容易伪造的字段。随手寫一個 Baiduspider 的成本几乎為零,所以 UA 只能用来分组,不能用来下结论。值得留意的是那些寫得很像但不完全一致的 UA,比如多一個版本号、大小寫有出入,這類通常是伪装的。
二、IP 與反向解析:相對可靠
主流搜尋引擎都公布了各自的 IP 段,也支持用反向 DNS 驗證:對来訪 IP 做一次 rDNS 查询,如果结果落在 googlebot.com、search.msn.com 這類域名下,再正向解析一次確認能對應回去,基本可以確認身份。百度蜘蛛同样有官方公布的 IP 段,可以直接比對。
有一点要注意:如果你用了 CDN 或反向代理,日誌里记錄的可能是节点 IP,而不是蜘蛛的真實 IP。這时要看回源日誌或者 CDN 提供的真實 IP 字段,否則會把所有請求都判成假的。
三、行為特征:辅助判断
- 真蜘蛛一般會先請求 robots.txt,再按規則抓頁面;
- 抓取节奏相對平稳,不會在几分钟内把整站拉一遍;
- 會顺着内鏈走,而不是只盯某一個目錄,或者只抓正文不抓列表;
- 請求头里通常带 Accept-Encoding、From 等字段,细节比伪造者完整。
几種容易誤判的情况
把 SEO 工具当成搜尋引擎。Ahrefs、Semrush、Screaming Frog 這類爬虫抓取频率高、覆盖面广,如果不加区分,很容易得出抓取很活跃的错誤印象。
把自家程序算進去。可用性监控、预渲染服務、站内搜尋的實时抓取,都會产生類似爬虫的請求。
把采集站当成蜘蛛。有些采集程序會伪装 UA 高频拉取内容,特征是只抓正文頁、不抓列表和资源文件、不請求 robots.txt,而且集中在很短的時間段里。
真蜘蛛来了却没收錄,問题在哪
確認抓取来源之後,還要记住一件事:抓取和收錄是两回事。蜘蛛来過,只說明 URL 被發現了,不等于頁面進了索引。常见原因有几個:
- 頁面返回的不是 200,或者内容為空、只剩一個框架;
- 頁面带有 noindex,或者被 robots.txt 拦住,被拦下的頁面即使被請求過也不會進入索引;
- 頁面内容與站内其他 URL 高度重复,搜尋引擎選擇了另一個版本;
- 内容本身质量不够,比如正文只有几行,頁面上大部分是導航和广告。
實际操作上的几点建议
- 分析日誌前先做一遍来源清洗,把確認非搜尋引擎的 IP 和 UA 過滤掉,再看抓取趋势;
- 把真蜘蛛抓過的 URL 列表導出来,和 sitemap、内鏈结构對照,看哪些頁面一直没被碰過;
- 對高频訪問但 IP 不属于搜尋引擎的請求,可以考虑在服務器层面做限速,不必動 robots.txt;
- 定期更新搜尋引擎公布的 IP 段,避免因為 IP 库過期而誤判。
抓取資料只有先确定来源,才能用来判断收錄。把真蜘蛛和假蜘蛛混在一起看,得到的往往是一個漂亮但没有意义的數字。