news 2026/8/13 9:58:36

python爬取时怎么获取头部header

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python爬取时怎么获取头部header

在 Python 爬虫开发中,HTTP Header(请求头 / 响应头)是核心环节:请求头(Request Header)用于模拟浏览器身份、传递请求参数,避免被反爬;响应头(Response Header)包含服务器返回的状态、编码、Cookie 等关键信息。以下分场景详细讲解如何构造请求头从浏览器获取真实请求头提取响应头,并结合requestsSelenium等常用库给出示例。


一、核心概念:请求头 vs 响应头

类型作用常见字段
请求头客户端向服务器发送请求时携带的信息,用于标识请求身份、偏好等User-AgentRefererCookieAcceptAccept-EncodingOrigin
响应头服务器向客户端返回响应时携带的信息,包含响应状态、数据格式、Cookie 等Set-CookieContent-TypeContent-EncodingServerDate

二、场景 1:手动构造请求头(Request Header)

爬取普通网页时,最常用的方式是手动构造请求头,核心是设置User-Agent(模拟浏览器),复杂场景需补充CookieReferer等。

1. 基础示例(使用requests库)

import requests # 1. 构造请求头字典(核心字段按需添加) headers = { # 必选:模拟浏览器标识(关键反爬字段) "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", # 可选:表示请求来源页面(部分网站会验证) "Referer": "https://www.jd.com/", # 可选:接受的数据格式 "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", # 可选:接受的编码格式 "Accept-Encoding": "gzip, deflate, br", # 可选:语言偏好 "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", # 可选:Cookie(需从浏览器获取,用于保持登录状态) "Cookie": "xxx=xxx; yyy=yyy;" } # 2. 发送请求时携带请求头 url = "https://www.example.com" response = requests.get(url, headers=headers) print("请求是否成功:", response.status_code) # 200表示成功

2. 常用请求头字段说明

字段名必选作用
User-Agent标识客户端类型(浏览器 / 爬虫),缺少或异常会被反爬拦截
Cookie携带用户登录状态、会话信息,爬取需要登录的页面时必须
Referer告诉服务器请求的来源,部分网站会验证该字段防止跨站请求
Origin跨域请求时携带,标识请求的源域名
Accept告诉服务器客户端能接受的响应数据格式

三、场景 2:从浏览器开发者工具获取真实请求头

手动构造的请求头可能不够 “真实”,尤其是面对反爬严格的网站(如京东、淘宝),直接复制浏览器的真实请求头是最可靠的方式。

操作步骤(以 Chrome 浏览器为例)

  1. 打开目标网页,按F12或右键→检查,打开开发者工具;
  2. 切换到Network(网络)标签,刷新页面(确保捕获所有请求);
  3. 在请求列表中找到目标请求(通常是第一个Doc类型的请求,或 API 接口请求);
  4. 点击该请求,在右侧Headers(标头)中找到Request Headers(请求头)
  5. 复制全部请求头(可右键→CopyCopy as cURLCopy headers),转换为 Python 字典。

四、场景 3:获取服务器返回的响应头(Response Header)

发送请求后,可通过requests库的响应对象直接提取响应头,用于获取 Cookie、响应编码、服务器信息等。

五、场景 4:用 Selenium 获取浏览器的真实请求头 / 响应头

对于动态渲染的页面(如 JS 加载的内容),Selenium可模拟真实浏览器的请求,通过抓包或浏览器日志获取请求头 / 响应头。

方法 1:直接获取 Selenium 的请求头(通过webdriver

from selenium import webdriver from selenium.webdriver.chrome.options import Options # 配置Chrome选项 chrome_options = Options() chrome_options.add_argument("--headless=new") # 无头模式(可选) driver = webdriver.Chrome(options=chrome_options) # 访问目标页面 driver.get("https://www.jd.com") # 执行JS获取浏览器的User-Agent(间接获取请求头核心字段) user_agent = driver.execute_script("return navigator.userAgent;") print("Selenium的User-Agent:", user_agent) # 关闭浏览器 driver.quit()

方法 2:通过mitmproxy/Charles抓包获取 Selenium 的请求头

如果需要完整的请求头 / 响应头,可使用抓包工具(如mitmproxy、Charles、Fiddler)拦截 Selenium 的请求,步骤如下:

  1. 启动抓包工具,设置代理端口(如8080);
  2. Selenium 配置代理,指向抓包工具;
  3. 访问目标页面,抓包工具会捕获所有请求的头信息。

六、实用技巧与注意事项


总结

获取和使用 Header 的核心是模拟真实浏览器的请求行为

简单场景:手动构造User-Agent等核心字段;

复杂场景:从浏览器复制真实请求头,或用抓包工具获取;

响应头:通过requestsresponse.headers直接提取。

结合反爬策略(如随机User-Agent、更新 Cookie),可大幅提升爬虫的稳定性和成功率。

  1. 请求头的大小写requests库会自动处理请求头的大小写(如user-agentUser-Agent等效),无需严格区分;
  2. Cookie 的时效性:Cookie 通常有过期时间,爬取需要登录的页面时,需定期更新 Cookie;
  3. User-Agent 池:为避免被识别为爬虫,可维护一个User-Agent池,每次请求随机选择一个;
  4. 避免过度携带字段:并非所有请求头字段都需要,核心字段(User-Agent)满足后,多数网站可正常访问;
  5. 遵守 robots 协议:爬取前查看网站的robots.txt(如https://www.jd.com/robots.txt),避免爬取禁止的内容。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/12 20:32:16

MapReduce与Kafka实时数据处理

《从批处理到实时:MapReduce与Kafka结合的实时数据处理实战》 引言:为什么需要“批处理+实时”的组合? 你是否遇到过这样的场景? 用MapReduce处理每天的用户行为日志,只能第二天看到前一天的统计结果,无法及时发现当天的异常(比如某商品突然爆单); 监控系统用离线批…

作者头像 李华
网站建设 2026/8/13 3:52:41

LangFlow创业扶持基金投资方向说明

LangFlow创业扶持基金投资方向说明 在AI技术快速渗透各行各业的今天,一个现实问题摆在许多创业者面前:如何在没有庞大工程团队的情况下,快速验证一个基于大语言模型(LLM)的商业想法?传统开发模式要求精通Py…

作者头像 李华
网站建设 2026/8/10 11:49:55

必须掌握的脱敏后恢复控制策略:Open-AutoGLM工程师内部分享

第一章:Open-AutoGLM 脱敏后数据恢复控制概述在数据安全与隐私保护日益重要的背景下,Open-AutoGLM 提供了一套完整的脱敏后数据恢复控制机制,确保敏感信息在使用过程中既能满足业务需求,又能严格遵循合规要求。该机制通过加密存储…

作者头像 李华
网站建设 2026/8/13 7:43:05

从零修复Open-AutoGLM SSL信任链问题,掌握这6步即可彻底解决

第一章:Open-AutoGLM SSL信任链问题概述 在部署 Open-AutoGLM 服务时,SSL/TLS 信任链的正确配置是保障通信安全与系统稳定的关键环节。当客户端尝试通过 HTTPS 连接至 Open-AutoGLM 实例时,若服务器返回的证书链不完整或根证书未被信任&#…

作者头像 李华
网站建设 2026/8/13 9:19:27

从TLS 1.0到1.3:Open-AutoGLM平滑演进路径详解,错过等于裸奔

第一章:Open-AutoGLM TLS 版本适配优化在部署 Open-AutoGLM 服务时,TLS 协议版本的兼容性直接影响到通信安全与客户端连接稳定性。随着主流浏览器和安全标准逐步弃用 TLS 1.0 和 1.1,系统必须升级至 TLS 1.2 或更高版本以满足现代安全要求。为…

作者头像 李华
网站建设 2026/8/12 14:25:43

17.1 工程化实施:将模型转化为稳定服务

17.1 工程化实施:将模型转化为稳定服务 在前几章中,我们深入探讨了模型微调和对齐技术。今天,我们将进入模型工程化实施阶段,探讨如何将训练好的模型转化为稳定、可靠、可扩展的生产服务。这是AIGC项目从实验阶段走向实际应用的关键一步。 模型工程化的重要性 模型工程化…

作者头像 李华