為什么要從日誌入手
後台的抓取統計通常只给出匯總數字,比如某個時間段有多少次抓取、多少條 URL 被處理。它很难回答一個具体問题:某個目标 URL 到底有没有被搜尋蜘蛛發現過。服務器日誌记錄的是每一次真實請求,能看到 UA、請求的路径、返回的狀態碼和發生時間,因此在排查 URL 發現問题时更直接。
需要先明确一点:日誌只能證明“請求發生過”,不能證明“已经被收錄”。發現、抓取、收錄是三件不同的事,日誌主要覆盖前两件。
先確認日誌里哪些請求是搜尋蜘蛛
第一步是筛出搜尋蜘蛛的請求,通常按 User-Agent 過滤,比如包含 Googlebot、Bingbot、Baiduspider 等标识。但要注意:
- UA 可以被伪造,只看 UA 容易把普通爬虫或采集程序当成搜尋蜘蛛;
- 更稳妥的做法是结合 IP 反查(反向 DNS 或官方 IP 段列表)交叉驗證;
- 部分蜘蛛會使用移動端或图片、视频专用 UA,過滤規則別寫得太窄。
如果站点前面有 CDN 或反向代理,日誌里的来源 IP 可能是节点 IP,這时要去 CDN 的日誌或回源日誌里看,否則容易得出错誤结论。
要看的關键字段
1. 請求路径
先看入口頁的路径有没有被請求。入口頁是蜘蛛發現新連結的主要来源,如果入口頁長期没有抓取记錄,後面的目标 URL 自然也难以被發現。
2. 狀態碼
狀態碼能反映蜘蛛看到的是什么:
- 200:正常返回,但不代表内容就是我們希望它看到的那一版,缓存或中間层可能返回了舊内容;
- 301 / 302:說明發生了跳轉,要顺着看最终落在哪個地址;
- 403 / 401:可能被防火墙、频率限制或權限校驗拦住了;
- 404 / 410:連結目标已经不存在,蜘蛛自然不會繼續深入;
- 5xx:服務端错誤,短時間大量出現會让抓取节奏變慢。
3. Referer
Referer 可以帮助判断蜘蛛是從哪個頁面跳到目标 URL 的。如果目标 URL 的請求 Referer 是入口頁,說明連結被發現並跟進了;如果 Referer 為空,可能是通過 sitemap 或其他渠道進入的。
4. 請求時間
把入口頁被抓的時間和目标 URL 首次被抓的時間放在一起看,能大致判断發現鏈路是否顺畅。若入口頁频繁被抓,目标 URL 却始终没有請求记錄,問题多半出在連結结构或連結可達性上。
“發現”和“抓取”是两個阶段
蜘蛛先發現 URL,把它放進待抓取队列,之後才可能真正請求。队列有優先級和容量限制,所以出現下面两種情况都算正常:
- 入口頁已抓取,目标 URL 暂时没有請求记錄,可能只是還在排队;
- 目标 URL 被抓取過一次,但之後很久没有再次抓取,可能和更新频率、站点權重有關。
發現不等于抓取,抓取也不等于收錄。日誌能確認的是前两步,收錄结果仍要以搜尋平台的站長工具為准。
常见的几種誤判
把 CDN 缓存命中当成蜘蛛抓取
如果 CDN 直接返回缓存内容,回源日誌里可能看不到這條請求,于是誤以為蜘蛛没来。反過来,如果 CDN 缓存了舊版入口頁,蜘蛛看到的連結列表可能和目前頁面不一致。
日誌被采样或轮轉
高流量站点常開啟日誌采样,或者日誌只保留最近几天。按采样後的日誌統計“有没有被抓過”,结论會偏保守。
把驗證頁当成正常頁面
有些站点對可疑請求返回 200,但内容是驗證碼或拦截提示。狀態碼看着正常,實际蜘蛛並没有拿到連結。
只看總量不看具体 URL
抓取總量上升不代表目标 URL 一定被抓。排查时要落到具体路径,而不是停留在趋势图上。
一個简單的排查顺序
- 確認日誌来源可靠,排除 CDN、代理、采样的干扰;
- 筛出搜尋蜘蛛請求,驗證 UA 與 IP;
- 查入口頁請求记錄與狀態碼;
- 查目标 URL 請求记錄、狀態碼與 Referer;
- 對比時間线,判断是發現环节慢,還是抓取配額或優先級的問题;
- 必要时同步看 sitemap 的抓取情况,互相印證。
日誌分析的價值在于把模糊的“感觉没被抓”變成可核對的事實。它不能直接提升抓取,但能让排查少走弯路。