请求头设置

掌握HTTP请求头的设置技巧,模拟真实浏览器行为

核心概念

什么是请求头?

请求头(HTTP Headers)是客户端发送给服务器的关键信息,包含浏览器类型、接受的数据格式、认证信息等。

# 常见请求头 headers = { 'User-Agent': 'Mozilla/5.0...', # 浏览器标识 'Accept': 'text/html,...', # 接受的数据类型 'Authorization': 'Bearer...', # 认证信息 'Cookie': 'session=abc123...' # 会话信息 }

为什么重要?

  • • 模拟真实用户行为,避免被识别为爬虫
  • • 携带必要的认证信息访问受限资源
  • • 指定接受的数据格式(JSON、XML等)
  • • 处理Cookie和会话管理

常用请求头详解

User-Agent

标识浏览器和操作系统

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36

Accept

指定接受的响应格式

application/json, text/plain, */*

Authorization

携带认证信息

Bearer eyJhbGciOiJIUzI1NiIs...

故事化案例:小明的API调试器

小明是一名后端开发工程师,最近需要对接一个第三方天气API。但是无论他怎么请求,服务器总是返回403错误。 经过分析,他发现需要设置特定的请求头才能访问API。

# 小明的解决方案
import requests

# 设置完整的请求头
headers = {
    'User-Agent': 'WeatherApp/1.0 (contact@example.com)',
    'Accept': 'application/json',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Cache-Control': 'no-cache',
    'Pragma': 'no-cache'
}

url = 'https://api.weather.com/v1/current'
params = {'city': '北京', 'key': 'YOUR_API_KEY'}

response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
    weather_data = response.json()
    print(f"北京当前温度:{weather_data['temperature']}°C")
else:
    print(f"请求失败:{response.status_code}")
                        

8个练习题

练习1:基础请求头设置

设置一个基本的User-Agent请求头,访问百度首页。

# 目标:设置User-Agent为"PythonBot/1.0" # 访问:https://www.baidu.com # 检查响应状态码是否为200

练习2:多请求头设置

同时设置User-Agent、Accept和Accept-Language请求头。

# 设置: # User-Agent: MyCrawler/1.0 # Accept: application/json # Accept-Language: zh-CN

练习3:随机User-Agent

创建一个随机User-Agent生成器,每次请求使用不同的UA。

# 从列表中随机选择: # ["Chrome/91", "Firefox/89", "Safari/14"]

练习4:Cookie设置

在请求头中设置Cookie信息,模拟登录状态。

# 设置Cookie:sessionid=abc123; user_id=456

练习5:Referer设置

设置Referer请求头,模拟从其他页面跳转过来。

# 设置Referer: https://www.example.com/page1

练习6:API认证头

设置Authorization头,使用Bearer Token认证。

# 设置:Authorization: Bearer your_token_here

练习7:自定义请求头

添加自定义的X-Requested-With和X-API-Key请求头。

# 设置: # X-Requested-With: XMLHttpRequest # X-API-Key: your_api_key

练习8:请求头调试器

创建一个函数,检查并修复常见的请求头问题。

# 检查:User-Agent是否为空 # Accept是否包含必要格式 # 返回修复后的headers

互动练习:请求头构造器

构造请求头

生成的结果