搜索抓取

服务器日志里的抓取记录:哪些信号值得看,哪些容易被误读

服务器日志是观察蜘蛛抓取最直接的材料,但抓取次数多并不代表抓得对。本文把日志里的请求、状态码与来源分开来看,整理出值得长期关注的几类信号,也列出 CDN 缓存、伪造 UA、参数噪音等容易误读的情况,并给出用日志反查内链与 URL 发现的几个具体动作。

搜索抓取

服务器日志里的抓取记录:哪些信号值得看,哪些容易被误读

想了解蜘蛛到底怎么走站点,服务器日志是最直接的一手材料。它记录的是已经发生的事,不依赖任何工具的估算。但日志也最容易被过度解读:抓取次数多不等于抓得好,5xx 变少也不等于问题解决了。看日志之前,先明确自己想回答的是哪类问题——“哪些 URL 被抓了”“抓的时候服务器回了什么”“哪些页面一直没被抓”,而不是笼统地看“今天蜘蛛来了多少次”。

先把日志里的三类信息分开

  • 请求本身:时间、IP、User-Agent、请求方法、完整 URL(含参数)。
  • 响应结果:状态码、响应体积、响应耗时。
  • 来源线索:Referer 有时能看出蜘蛛是从哪个页面走到这个 URL 的。

把这三类分开看,很多疑问会自然消失。比如“蜘蛛是不是不喜欢我的新页面”,往往只是新页面还没有被站内链接指向,日志里自然不会出现。

值得长期盯的几个信号

状态码的分布

200 之外的部分更值得关注。404 集中出现,说明站内仍有指向失效地址的链接,蜘蛛每次都白跑一趟;301 链过长,说明跳转没有收敛到最终地址;5xx 与超时则会影响抓取节奏,蜘蛛遇到连续失败通常会放慢速度、拉开间隔。304 是正常现象,表示蜘蛛在做条件请求、页面没有变化,不算抓取失败。

被抓的 URL 是不是你想被抓的

如果日志里大量出现筛选、排序、会话参数拼出来的地址,而有用的内容页反而出现得少,说明抓取路径被参数入口分走了。这时先检查内链和 sitemap 里的 URL 写法,再考虑其他原因。

同一 URL 的重复抓取

短期内反复抓同一个地址,通常意味着页面有更新信号,或者这个地址被多处链接引用。前者是正常的;后者要看是不是内链冗余,是否值得调整链接位置,让链接集中到更有价值的地址上。

抓取时段与频次的变化

频次突然下降,可能出在服务端(响应变慢、错误率上升),也可能出在站点本身(长期不更新、内容结构发生变化)。连续看两周的趋势,比盯着某一天的峰值有意义得多。

容易被误读的几种情况

  • User-Agent 可以伪造:日志里自称蜘蛛的请求不一定是蜘蛛,必要时用反向 DNS 校验身份。
  • CDN 命中时源站日志是空的:边缘节点直接返回缓存,源站看不到这次抓取,容易得出“蜘蛛没来”的错误结论。要分析抓取,最好取边缘节点日志,而不是只看源站。
  • 被抓不等于被收录:日志只说明请求发生过,页面是否进入索引是另一回事,两者不要混着判断。
  • 抓取量下降不一定有问题:清理掉大量重复的参数 URL 之后,抓取总量下降反而是一次正常的收敛。

用日志反过来推进 URL 发现

  1. 把 sitemap 里的 URL 与日志中实际被抓的 URL 做一次对照,找出“提交了但从没被抓过”的部分,优先检查这些页面的内链入口。
  2. 找出“被抓过却没有内链指向”的孤岛页面,为它们补上自然、相关的链接路径。
  3. 结合 Referer,确认重要的内容页是否真的处在离首页几步之内就能被点到的位置。
  4. 翻出 404 日志里的来源页面,把失效链接修掉或换成有效地址,避免蜘蛛每次都走进同一条死胡同。
日志是过程指标,不是结果指标。它适合用来发现抓取路径上的问题,不适合用来判断页面本身的好坏。

把日志当成一张路线图来看,比当成一张成绩单更有用。定期对照 sitemap、内链结构和状态码分布,通常就能找到抓取路径里最明显的那几处断点。