做入口頁的人往往只關心结果:里面的連結有没有被搜尋蜘蛛發現。但在這之前有一個更基础的問题——搜尋蜘蛛到底来没来過。如果這一步都没確認,後面讨论連結數量、更新频率、參數處理其實都缺少依據。判断蜘蛛是否到訪,不能只看統計工具里的「蜘蛛来訪次數」,那類資料里有相当一部分是 User-Agent 直接伪造出来的。下面说几個相對靠谱的核對方式。
一、先看服務器原始訪問日誌
統計工具會對日誌做過滤、归類和抽样,出現誤判很正常。要確認抓取,最好直接翻服務器原始日誌,那里至少包含訪問時間、IP、User-Agent、請求路径和狀態碼這几項。先按入口頁地址筛一遍,看有没有带搜尋引擎标识的請求。
二、User-Agent 只是第一步,不能單獨采信
UA 字符串是可以随便寫的,一段简單脚本就能把自己标成主流搜尋引擎的蜘蛛。所以看到 UA 里带着蜘蛛名字,只能算线索,不能算證據。通常要再做两件事。
反向 DNS 驗證
對訪問 IP 做反向解析,看主机名是否落在搜尋引擎自己的域名下;拿到主机名之後,再正向解析一次,看是否回到原 IP。两步都能對上,可信度才比較高。不同搜尋引擎使用的驗證域名不一样,用之前先查對應官方的說明,別照搬別家的規則。
核對官方公布的 IP 段
主流搜尋引擎會公布蜘蛛使用的 IP 段,可以把日誌里的 IP 和這些段做比對。注意這類列表會更新,不要拿几年前的备份一直用,否則容易把正常抓取誤判成假蜘蛛,或者反過来放過伪造流量。
三、假蜘蛛常见的几個特征
- 只反复請求首頁或入口頁,對頁面里的资源、後續路径完全没有兴趣;
- 請求频率異常高,短時間内密集打满整站;
- UA 拼寫有誤、版本号格式不符合官方习惯;
- 反向解析查不到结果,或者解析出来對不上正向记錄;
- 只针對带特定參數的地址訪問,對正常内容不闻不問。
如果同时命中两三條,基本可以先按伪装流量處理。
四、確認真蜘蛛之後,日誌里该看什么
- 狀態碼:200 說明入口頁正常返回;如果大量出現 429、403 或 5xx,說明入口頁在拦截它,或者服務本身不稳定,這種情况連結發現會受明顯影响。
- 抓取路径:它訪問完入口頁之後,有没有繼續請求里面的目标地址。只抓入口頁、不跟進时,重点检查連結是否可被解析、是否被 robots.txt 拦住、是否带了 nofollow 标记。
- 時間分布:偶發几次到訪和持續、有节奏的抓取,含义完全不同。新上线的入口頁通常需要一段時間才會進入相對稳定的抓取节奏。
- 抓到的版本:如果日誌中的請求地址或參數和你目前版本對不上,可能是缓存内容,也可能是舊連結還在被訪問。
五、入口頁一直没被抓,检查這几項
- 入口頁是否可以被公開訪問,有没有被登入、驗證碼、訪問频率限制挡住;
- robots.txt 是否誤拦;
- 服務器是否長期响應超时或返回错誤;
- 是否有外部頁面指向這個入口頁,纯靠新地址等蜘蛛自己爬到,通常比較慢;
- 是否在搜尋资源平台提交過入口頁地址。提交不等于被抓,但至少提供了一個入口。
六、要纠正的一個常见誤解
日誌里出現搜尋蜘蛛,只能說明入口頁被訪問過。連結有没有被放進待抓队列、目标地址什么时候被抓、抓取之後是否收錄,都是後面的环节。
把「日誌里有蜘蛛」当成「URL 已经被發現並收錄」,很容易得出错誤结论,也會让後續調整失去方向。比較稳妥的做法是分三步看:先確認真實抓取,再看連結是否被跟進,最後才评估目标地址的抓取與收錄情况。每一步分開判断,問题出在哪一段會清楚很多。