服务器日志是唯一一份“蜘蛛实际做了什么”的记录。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 与日志的差集作为下一轮检查清单,而不是提交完就不再管。
日志分析的价值不在于看多少数据,而在于把“蜘蛛走到了哪里、在哪儿停下”变成可验证的问题。固定一套筛选和分组方式,隔一段时间重复一次,抓取路径的变化趋势会比单次快照更有参考价值。