服務器日誌是唯一一份“蜘蛛實际做了什么”的记錄。Sitemap 里寫了什么、内鏈指向哪里,都只是站方的预期;日誌才告诉你蜘蛛真的請求了哪些 URL、按什么顺序走、在哪儿停下。把日誌按抓取路径讀一遍,通常比反复猜测有效得多。
先固定要看的那几列
大多數訪問日誌至少包含時間、客戶端 IP、請求方法、URL、狀態碼、响應字节數、User-Agent 和 Referer。分析抓取时,重点看下面几項:
- User-Agent:用来筛出搜尋蜘蛛,例如 Googlebot、Bingbot、百度蜘蛛等。注意 UA 可以伪造,必要时做反向解析驗證来源。
- URL 與查询串:確認蜘蛛請求的是規范化後的地址,還是带參數的副本。
- Referer:很多蜘蛛會带上来源頁,這能直接拼出“從哪個頁面走到這個頁面”。
- 狀態碼與响應時間:200 之外的部分,往往就是抓取路径断裂的位置。
用 Referer 還原一條路径
把同一時間段内同一蜘蛛的记錄按時間排序,用 Referer 串起来,就能看到一條近似真實的抓取路径:首頁 → 频道頁 → 列表頁 → 詳情頁。常见現象是路径在某個层級收窄,比如列表頁只翻到前几頁,或者只有一部分詳情頁被訪問。這时問题通常出在内鏈的暴露程度,而不是蜘蛛“不愿意抓”。
如果日誌里大量請求的 Referer 為空,說明這些 URL 更可能来自 Sitemap、外鏈或歷史记錄,而不是站内跳轉。两種来源的 URL 集合應当分開統計,否則會誤判内鏈的效果。
狀態碼分布說明什么
- 大量 404:内鏈或 Sitemap 里存在失效地址,蜘蛛每走一次都是浪費。
- 301/302 成串出現:抓取路径上有一段需要多次跳轉才能到终点,鏈路越長,损耗越多。
- 5xx 集中在某段時間:多為服務器或應用层過载,蜘蛛之後會重试,但频繁出現會让抓取节奏變慢。
- 403 或 429:可能是防火墙、限速規則在拦截,需要確認是否誤伤了正常蜘蛛。
拿日誌對照 Sitemap 和内鏈
把 Sitemap 中的 URL 列表與日誌里實际被請求的 URL 做差集,能直接得到两類信息:提交了但一直没被抓的 URL,以及被抓了但不在 Sitemap 里的 URL。前者可以检查是否被 robots.txt 挡住、是否层深過深、是否長期返回错誤;後者往往来自内鏈或外鏈,需要判断是否值得保留。
同样,把“頁面上的出鏈”與“日誌里的被請求记錄”對照,可以找出内鏈寫了但蜘蛛從没走過的情况。若某個連結所在的区块由前端脚本注入,或者藏在折叠内容里,就需要單獨確認渲染後的可见性。
几個容易誤讀的点
日誌里出現某條记錄,只說明蜘蛛請求過這個地址,不代表它已经收錄,也不代表它認為這個頁面重要。抓取、索引、排名是三件不同的事。
- 同一 URL 短時間内被請求多次,可能是重试,也可能来自不同机房的蜘蛛,不必立刻当成異常。
- 只統計總請求數意义不大,按目錄、按狀態碼、按层深分组後才有判断價值。
- CDN 或反向代理日誌可能只记錄回源請求,命中缓存的抓取不一定出現,最好结合邊缘节点日誌一起看。
把结论落到可执行的調整
- 把返回 5xx 或超时的 URL 列出来,優先修稳定性和响應時間。
- 把被内鏈指向却返回 404/410 的連結清理掉,或改成有效地址。
- 把重要但层深過深的頁面,通過列表頁或相關推荐减少跳轉次數。
- 把 Sitemap 與日誌的差集作為下一轮检查清單,而不是提交完就不再管。
日誌分析的價值不在于看多少資料,而在于把“蜘蛛走到了哪里、在哪儿停下”變成可驗證的問题。固定一套篩選和分组方式,隔一段時間重复一次,抓取路径的變化趋势會比單次快照更有參考價值。