首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python爬虫中如何正确设置请求头---辣椒新手避坑指南

Python爬虫中如何正确设置请求头---辣椒新手避坑指南

原创
作者头像
用户12481158
修改2026-05-13 09:42:29
修改2026-05-13 09:42:29
1190
举报

很多新手写爬虫时,只写了URL就发请求,结果 status 200 却拿不到数据。问题往往出在请求头上。本文介绍 User-Agent、Referer 等常用请求头的作用及配置方法,帮助新手提升爬虫的友好度。

一、请求头是什么?

当你用浏览器访问一个网站时,浏览器会自动发送一些附加信息,比如“我是什么浏览器”“我从哪个页面跳转过来”“我接受什么格式的数据”。这些信息组合起来就叫请求头(Request Headers)

如果用 Python 的 requests 库直接发请求,默认的请求头很短,网站一看就知道不是正常浏览器在访问,于是要么拒绝返回数据,要么返回一个验证码页面。

二、最常用的三个请求头

2.1 User-Agent

告诉网站“你是什么浏览器”。默认的 Python 请求头里有 python-requests/版本号,一看就是自动化脚本。

常见浏览器UA示例:

代码语言:javascript
复制
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0

代码写法:

代码语言:javascript
复制
import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
resp = requests.get('https://example.com', headers=headers)

2.2 Referer

告诉网站“你从哪个页面跳转过来的”。很多网站会检查这个值,如果不是从它的内部页面跳转的,可能会拒绝响应。

示例: 你要爬取某个详情页,可以先访问一次它的首页,然后把首页地址作为Referer。

代码语言:javascript
复制
headers['Referer'] = 'https://www.example.com/'

2.3 Accept-Language

告诉网站“你接受哪种语言”。如果你总是用 zh-CN 访问一个美国网站,对方可能会返回英文版,或者认为你行为异常。

推荐写法:

代码语言:javascript
复制
headers['Accept-Language'] = 'en-US,en;q=0.9'

三、完整示例

代码语言:javascript
复制
import requests

url = 'https://httpbin.org/headers'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
    'Referer': 'https://www.google.com/',
    'Accept-Language': 'en-US,en;q=0.9',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
}

resp = requests.get(url, headers=headers)
print(resp.status_code)
print(resp.text)

四、几个小技巧

  • 不要每次都用完全相同的请求头:可以准备两三个不同浏览器版本的UA,随机切换。
  • 注意大小写:有些网站对 Referer 大小写敏感,一般首字母大写。
  • 先抓包再看:用浏览器的开发者工具(F12 → 网络)查看一次正常访问时的请求头,照着抄一遍最准确。

五、总结

请求头是爬虫和网站之间的“第一印象”。正确的请求头不能保证你百分之百拿不到验证码,但能显著降低被直接拒绝的概率。

对于新手来说,先学会设置 User-AgentRefererAccept-Language 这三个,已经能解决大部分基础问题。后续遇到更严格的防护时,再学习使用 Session 保持登录态、添加 Cookie 等进阶操作。

本文仅作技术交流,请遵守目标网站的访问规则,合理控制请求频率。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、请求头是什么?
  • 二、最常用的三个请求头
    • 2.1 User-Agent
    • 2.2 Referer
    • 2.3 Accept-Language
  • 三、完整示例
  • 四、几个小技巧
  • 五、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档