Python爬虫 UA请求头伪装完整教程
·
文章目录
1. 什么是UA(User‑Agent)
User‑Agent简称UA,是HTTP请求头里面的字段。服务器通过UA识别客户端是什么设备、浏览器、操作系统。
如果Python requests直接发起请求,默认UA是 python‑requests/版本号。
网站识别到是爬虫客户端,直接返回403拒绝访问、返回假数据。
UA伪装就是把请求标识改成普通浏览器的身份。
查看本机请求UA测试地址:xxxxxxxxx
默认爬虫UA示例:
User‑Agent: python‑requests/2.31.0
浏览器真实UA示例(Chrome Windows)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
2. 静态写死UA(最简单用法)
安装依赖
pip install requests
代码示例
import requests
url = "xxxxxxxxx"
# 构造请求头,填入浏览器UA
headers = {
"User‑Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"
}
resp = requests.get(url, headers=headers, timeout=10)
print(resp.text)
输出结果可以看到
User‑Agent已经变成Chrome浏览器标识,不再是python‑requests。
如何获取自己浏览器真实UA
- Chrome浏览器按F12打开开发者工具
- 切换到【网络】,刷新页面
- 随便点一条请求,右侧请求头找到
User‑Agent,复制全部字符串即可。
3. Session会话全局设置UA
多次请求不需要每次都写headers,使用Session.headers.update()全局配置。
import requests
session = requests.Session()
# 统一设置UA,后续所有get/post自动携带
session.headers.update({
"User‑Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"
})
resp1 = session.get("xxxxxxxxx")
resp2 = session.get("xxxxxxxxx")
print(resp1.text)
4. UA池:随机切换User‑Agent(进阶)
固定同一个UA多次访问,部分网站依旧判定爬虫。维护UA列表,每次请求随机挑选一个UA,模拟多台浏览器访问。
import requests
import random
ua_list = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0"
]
headers = {
"User‑Agent": random.choice(ua_list)
}
resp = requests.get("xxxxxxxxx", headers=headers)
print(resp.text)
循环爬取场景完整示例
import requests
import random
import time
ua_list = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
]
for page in range(3):
headers = {"User‑Agent": random.choice(ua_list)}
resp = requests.get("xxxxxxxxx", headers=headers, timeout=10)
print(f"第{page+1}次请求:{resp.json()['headers']['User‑Agent']}")
time.sleep(1) # 请求间隔延时
5. 第三方库fake‑useragent自动生成UA
不用手动维护UA列表,库内置海量浏览器UA,自动随机生成。
安装
pip install fake‑useragent
示例代码
import requests
from fake_useragent import UserAgent
ua = UserAgent()
headers = {
"User‑Agent": ua.random # 随机获取浏览器UA
}
resp = requests.get("xxxxxxxxx", headers=headers)
print(headers["User‑Agent"])
print(resp.text)
离线环境小坑:第一次运行会联网下载UA数据,无网络会报错,可以本地缓存ua数据。
6. 常见踩坑点
- 符号复制错误:复制UA不要带多余换行、空格,会直接403访问拒绝。
- 只伪装UA不等于万能:仅仅修改UA,IP访问频率太高依旧被封,需要配合延时、代理IP、Cookie一起使用。
- 移动端网站:需要填入手机浏览器UA,而PC端UA。
- headers字典key严格区分大小写,必须写
User‑Agent,不能随意简写。 - fake‑useragent库网络不好加载失败,可以捕获异常,回退使用内置静态UA。
fake‑useragent容错写法:
from fake_useragent import UserAgent
try:
ua = UserAgent()
my_ua = ua.random
except Exception:
my_ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"
headers = {"User‑Agent": my_ua}
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)