站点运营

站点运营:HTTP 响应头自查,别让蜘蛛收到矛盾的抓取信号

蜘蛛抓取页面时,先看到的是 HTTP 响应头,而不是正文。Content-Type、X-Robots-Tag、缓存头、Location、Vary 等如果互相矛盾,可能让蜘蛛误判页面状态。本文整理响应头自查的优先项、操作方法和常见错误组合,帮助站点运营者减少抓取环节的干扰信号。

站点运营

站点运营:HTTP 响应头自查,别让蜘蛛收到矛盾的抓取信号

很多站点运营者检查抓取问题时,习惯先看正文、标题、链接,却忽略了蜘蛛在拿到 HTML 之前先收到的 HTTP 响应头。响应头里的状态码、内容类型、缓存策略、robots 指令等,都会影响蜘蛛如何理解这个地址。如果头信息之间互相矛盾,蜘蛛可能做出与预期不同的处理。

响应头为什么值得单独检查

可以把响应头理解为服务器给蜘蛛的“交接单”。它不直接决定内容质量,但决定蜘蛛是否愿意继续读取、是否缓存、是否索引、是否跟随跳转。正文写得再好,如果响应头给出错误信号,抓取和后续处理都可能被干扰。

建议把响应头自查纳入站点例行巡检,尤其在改版、迁移、切换 CDN 或调整服务器配置之后。

优先看这几类头信息

1. Content-Type 与字符集

HTML 页面应返回 text/html,并带上正确的字符集,例如 text/html; charset=utf-8。如果 Content-Type 被写成 text/plain、application/octet-stream 或字符集与实际编码不一致,蜘蛛可能无法正常解析页面,中文内容尤其容易出现乱码判断。

  • 检查动态页面、错误页、下载接口是否误用同一套默认类型。
  • 检查 charset 是否与页面 meta charset 一致。
  • 检查 404 页面是否也返回 text/html,而不是纯文本或空白。

2. X-Robots-Tag

X-Robots-Tag 是写在响应头里的 robots 指令,优先级和写法容易与页面 meta robots 混淆。如果测试环境残留 noindex,或者运维层面对整站批量加上了 noindex,蜘蛛会按头信息执行。自查时要确认它是否与页面级指令一致,避免一个说 index,一个说 noindex。

3. 缓存相关头

Cache-Control、Expires、ETag、Last-Modified 会影响蜘蛛和中间缓存看到的是新版本还是旧版本。内容更新后,如果缓存头仍然让页面长时间保持旧状态,蜘蛛可能反复抓到改动前的内容。

  • 确认 HTML 文档的缓存时间是否过短或过长。
  • 确认更新内容后是否有合理的刷新机制。
  • 确认 ETag 和 Last-Modified 不会频繁无故变化。

4. Location 与重定向

重定向响应中的 Location 必须指向最终可达的地址。如果 Location 指向一个本身又重定向的地址,或者指向 404、403 页面,蜘蛛会在跳转链里消耗时间。还要注意相对路径和绝对路径混用带来的意外解析。

5. Vary 与内容协商

如果服务器根据 User-Agent、Accept-Encoding 或 Cookie 返回不同内容,Vary 头需要如实声明。声明不当可能让缓存把移动端页面返回给桌面蜘蛛,或把未压缩版本反复发给不同客户端。对于蜘蛛来说,最稳妥的是同一 URL 返回稳定的 HTML 主体。

6. 压缩与传输相关头

Content-Encoding、Transfer-Encoding 等头如果配置异常,可能导致蜘蛛读取中断。通常不需要为蜘蛛单独关闭压缩,但要确认服务器、CDN 和源站之间的压缩设置没有冲突。

自查方法

  1. 用命令行工具请求几个代表性 URL,只看响应头。
  2. 对比首页、栏目页、详情页、分页、404 页的响应头差异。
  3. 在浏览器开发者工具的 Network 面板中查看 Response Headers,确认与命令行结果一致。
  4. 结合服务器访问日志,观察蜘蛛请求同一 URL 时返回的状态码和响应大小是否有异常波动。
  5. 改版或迁移后,抽取旧地址和新地址各一批,逐一核对。

常见矛盾组合

  • 页面允许索引,但 X-Robots-Tag 写了 noindex。
  • 返回 200 状态码,Content-Type 却是 text/plain,页面实际不可解析。
  • Cache-Control 设得很长,内容却每天更新,蜘蛛长期看到旧版本。
  • Location 指向带参数地址,参数地址又跳回原地址,形成循环。
  • Vary 未声明 User-Agent,缓存把移动版页面返回给桌面蜘蛛。

把响应头纳入日常巡检

响应头问题往往不是单独出现的,它们和服务器配置、CDN 规则、应用框架默认值有关。建议在每次调整服务器、发布流程或缓存策略后,固定检查一批 URL 的响应头,记录正常状态作为基线。这样出现抓取异常时,能更快判断是内容问题还是头信息问题。

不需要追求复杂的监控体系,先把关键页面的响应头看清楚、保持一致,就已经能减少很多让蜘蛛困惑的信号。