HTTP Headers 完全指南:请求头、响应头与爬虫伪装技巧

Last modified date

Comments: 3

HTTP 消息头(HTTP Headers)是 HTTP 请求和响应中携带元数据的关键组件。它们告诉服务器客户端是谁、能接受什么格式的内容、从哪个页面跳转过来等信息。无论是 Web 开发者、爬虫工程师还是安全研究人员,理解 HTTP 头都是必备技能。

HTTP 客户端-服务器模型

互联网本质上是客户端-服务器架构:你的浏览器(客户端)发送 HTTP 请求到网站服务器,服务器处理请求后返回响应。HTTP 头就夹在请求和响应中,传递各种控制信息。对于爬虫和无头浏览器工具来说,正确设置 HTTP 头是避免被反爬系统检测的关键。

常见请求头

Host

指定请求的目标域名。当一台服务器托管多个网站时,Host 头告诉服务器你要访问哪个站点。每个 HTTP/1.1 请求必须包含 Host 头。

User-Agent

User-Agent 字符串标识发起请求的客户端类型(浏览器、爬虫、脚本等)。很多爬虫工具抢鞋机器人因为用了不合理的 UA 而被反爬系统识别。建议使用真实浏览器的 UA 字符串。

Accept / Accept-Language / Accept-Encoding

告诉服务器客户端能接受什么类型的内容。Accept 指定 MIME 类型(如 text/html)、Accept-Language 指定语言偏好、Accept-Encoding 指定压缩方式(如 gzip)。

Referer

告诉服务器用户从哪个页面跳转过来的。注意这个单词本身拼写就是错的(少了一个 r),但这是 HTTP 规范历史遗留问题。

Cookie

携带之前服务器设置的 Cookie 数据,用于会话保持和身份认证。

X-Forwarded-For

当请求经过代理时,这个头记录了原始客户端的 IP 地址。如果你用了代理而且这个头设置不当,目标服务器可以看到你的真实 IP。

常见响应头

Content-Type

告诉客户端返回内容的 MIME 类型,如 text/html、application/json。

Set-Cookie

服务器通过此头向客户端设置 Cookie。配合 Cookie 请求头实现会话管理。

Cache-Control

控制缓存行为。常见值:no-cache(每次验证)、max-age(缓存时间)、no-store(不缓存)。

Location

用于重定向,配合 301/302 状态码,告诉浏览器跳转到新 URL。

爬虫场景下的 HTTP 头技巧

如果你在做网页爬虫,以下 HTTP 头设置能帮你避免被检测和封禁

  • 设置真实浏览器的 User-Agent
  • 添加合理的 Referer 头
  • 设置正确的 Accept-Language
  • 携带正确的 Cookie
  • 避免使用诸如 Python-urllib 等暴露身份的头

对于大规模采集,可以参考 Web Crawler 最佳实践

如何查看 HTTP 头

  • 浏览器开发者工具:按 F12 → Network 标签 → 点击任意请求查看 Headers
  • curl 命令curl -I https://example.com(仅响应头)或 curl -v https://example.com(包含请求头)
  • Python requestsresponse.headers
  • Burp Suite / Charles:专业抓包工具

相关教程

chcrazy

Share

3 Responses

Leave a Reply

Your email address will not be published. Required fields are marked *

Post comment