搜索抓取

服务器日志里的抓取路径:蜘蛛到底是从哪找到这条 URL 的

服务器日志是判断 URL 发现路径最完整的记录。本文说明怎样用 User-Agent、Referer、状态码和访问时间,区分 Sitemap 带来的抓取与内链带出的抓取,找出长期没有被访问的 URL,并把抓取频次的变化和服务器响应状态对应起来看。

搜索抓取

服务器日志里的抓取路径:蜘蛛到底是从哪找到这条 URL 的

很多人判断蜘蛛来没来过,习惯去看站长后台的抓取统计。但后台数据有延迟,也有抽样,真正完整、可追溯的记录在自己服务器的访问日志里。日志能回答一个很具体的问题:某条 URL 是被 Sitemap 带进来的,还是被站内某条链接带进来的,或者根本没有被访问过。

日志里值得关注的几类字段

  • User-Agent:区分 Googlebot、Bingbot、Baiduspider,也区分移动版与桌面版的抓取器。
  • 请求路径与查询串:看清蜘蛛实际请求的是带参数的地址,还是规范化之后的地址。
  • 状态码与响应时间:200、301、404、5xx 的分布,以及每次响应的耗时。
  • 访问时间:判断抓取是集中在某个时段,还是相对均匀地铺开。
  • Referer:部分抓取请求会带上来源页面,可以据此还原抓取路径。

判断一条 URL 是被什么带出来的

Sitemap 带来的抓取

这类请求通常有两个特征:路径集中在 Sitemap 列出的地址上,时间点和 Sitemap 更新或提交的时间接近;而且首次访问常常不带 Referer。看到这种形态,说明入口文件起了作用。

内链带出来的抓取

如果某条新 URL 的首次访问,Referer 指向站内某个列表页或文章页,说明蜘蛛是沿着链接爬过来的。这时候值得回头看那条链接的位置:位置越浅、上下文越相关,后续被回访的概率通常越高。

长期不出现的 URL

日志里始终没有记录的地址,一般有三种原因:它没有被任何内链或 Sitemap 提到;它被 robots.txt 拦住了;或者指向它的上层页面本身就没有被有效抓取。排查时按这个顺序走,比一上来就怀疑网站被降权要靠谱得多。

用日志核对 Sitemap 与内链的分工

Sitemap 主要解决“有没有被发现”,内链主要解决“值不值得继续爬、要不要回来再看”。日志可以帮你验证这两件事是否真的生效:把 Sitemap 提交的 URL 清单和日志里实际出现的 URL 做一次差集,长期没有访问记录的那部分,往往说明这些地址缺少内链支撑。只靠提交 Sitemap,并不一定换来持续回访。

抓取频次下降时,先看服务器

如果日志里蜘蛛的请求量突然变少,先别急着改标题和正文。检查同一时段的 5xx 比例、平均响应时间、有没有连接被中断的记录。蜘蛛来访时如果频繁遇到错误或者响应拖得太久,队列里的 URL 会被往后排,URL 发现的节奏也会跟着变慢。这类问题在日志里看得很清楚,在后台报表里往往只表现为一条向下的曲线。

几个容易被误读的地方

  • 日志里有请求,不等于页面会被收录,抓取只是进入处理流程的第一步。
  • 同一个 User-Agent 的请求可能来自不同机房,不必按 IP 段逐一放行或封禁。
  • 页面脚本在浏览器端产生的请求,不一定都会出现在服务器日志里,取决于渲染方式。
  • 移动版抓取器的访问量变化,通常比桌面版更值得盯一盯。

一份可以落地的复盘节奏

  1. 按周导出日志,按 User-Agent 和状态码拆分统计。
  2. 把 Sitemap 清单与日志访问清单对照,标出长期无访问的 URL。
  3. 抽查这些 URL 的内链情况,补上位置合理的入口链接,而不是把链接堆在页脚。
  4. 记录调整前后的抓取频次变化,观察两到四周再判断是否有效。
日志的价值不在于证明蜘蛛来过,而在于找出它没有走的那条路。