站点运营

站点运营: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 的响應头,记錄正常狀態作為基线。這样出現抓取異常时,能更快判断是内容問题還是头信息問题。

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