在 Python 中生成随机 User-Agent 是一个非常常见的需求,尤其是在进行网络爬虫、自动化测试或需要模拟不同浏览器访问时,下面我将为你介绍几种主流且实用的方法,从简单到专业。

使用 fake-useragent 库(最推荐)
这是最流行、最简单的方法,因为它内置了一个庞大的 User-Agent 列表,并且可以轻松获取随机值。
安装
你需要安装这个库:
pip install fake-useragent
使用方法
from fake_useragent import UserAgent
# 创建一个 UserAgent 对象
ua = UserAgent()
# 获取随机 User-Agent
random_ua = ua.random
print(f"随机 User-Agent: {random_ua}")
# 你也可以指定浏览器类型
# Chrome
chrome_ua = ua.chrome
print(f"Chrome User-Agent: {chrome_ua}")
# Firefox
firefox_ua = ua.firefox
print(f"Firefox User-Agent: {firefox_ua}")
# Safari
safari_ua = ua.safari
print(f"Safari User-Agent: {safari_ua}")
# Edge
edge_ua = ua.edge
print(f"Edge User-Agent: {edge_ua}")
# Opera
opera_ua = ua.opera
print(f"Opera User-Agent: {opera_ua}")
优点:
- 简单易用:几行代码就能搞定。
- 浏览器覆盖广:支持 Chrome, Firefox, Safari, Edge, Opera 等主流浏览器。
- 平台多样:可以指定 Windows, macOS, Linux, Android, iOS 等平台。
- 版本随机:获取的 User-Agent 版本是动态变化的,不易被识别。
缺点:

- 依赖外部文件:
fake-useragent库在首次运行时,会从 GitHub 下载一个useragents.json文件来存储 UA 列表,如果你的环境无法访问外网,可能会失败。
使用 fake_useragent 库的改进版 fake-useragent[use_system_certs]
如果你在使用 fake-useragent 时遇到 SSL 证书相关的错误,可以安装这个改进版,它会使用系统自带的 SSL 证书。
pip install "fake-useragent[use_system_certs]"
使用方法与原版完全相同。
手动维护一个 User-Agent 列表(最可控)
如果你不希望引入额外的库,或者需要完全控制 User-Agent 的来源,可以自己创建一个列表,然后从中随机选择。
创建 User-Agent 列表
# 创建一个包含常用 User-Agent 的列表
user_agents_list = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36',
'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1',
# ... 可以继续添加更多
]
随机选择
使用 Python 内置的 random 模块。
import random
# 从列表中随机选择一个
random_ua = random.choice(user_agents_list)
print(f"随机 User-Agent: {random_ua}")
优点:
- 无外部依赖:不需要安装任何第三方库。
- 完全可控:你可以精确地知道有哪些 User-Agent,方便筛选和修改。
缺点:
- 维护成本高:需要你手动更新列表,以跟上浏览器和操作系统的新版本。
- 列表可能过时:如果列表不常更新,获取的 UA 可能会被网站识别为旧的或无效的。
完整示例:在 requests 库中使用
最常见的场景是在 requests 请求中设置随机的 User-Agent。
import requests
from fake_useragent import UserAgent
# 方法一:使用 fake-useragent
ua = UserAgent()
headers = {
'User-Agent': ua.random,
'Accept-Language': 'en-US, en;q=0.9'
}
try:
# 发送请求
response = requests.get('https://httpbin.org/user-agent', headers=headers, timeout=10)
# 检查请求是否成功
response.raise_for_status()
# 打印返回的 User-Agent 信息,验证是否生效
print("请求成功!")
print("服务器收到的 User-Agent 信息:")
print(response.json()) # httpbin.org 会返回你发送的请求头信息
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
fake-useragent 库 |
简单、功能强大、UA列表更新及时 | 首次运行需下载外部文件 | 绝大多数场景,特别是爬虫和自动化测试 |
| 手动维护列表 | 无依赖、完全可控 | 维护成本高,UA易过时 | 对 UA 有特殊要求,或无法访问外网的环境 |
| 浏览器插件/网站获取 | UA真实、最新 | 需要手动操作,不适合自动化脚本 | 临时获取单个或少量最新 UA |
对于绝大多数 Python 强烈推荐使用 fake-useragent 库,因为它在易用性和功能性之间取得了最佳平衡。
