在 Python 中模拟 User-Agent(用户代理字符串)可以通过多种方式实现,以下是几种常见的方法,包括使用标准库、第三方库以及手动设置 User-Agent。

方法 1:使用 requests 库手动设置 User-Agent
requests 是 Python 中最常用的 HTTP 请求库,可以直接在请求头中设置 User-Agent。
import requests
url = "https://httpbin.org/user-agent" # 测试 URL,返回请求的 User-Agent
# 手动设置 User-Agent
headers = {
"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"
}
response = requests.get(url, headers=headers)
print(response.json()) # 输出服务器收到的 User-Agent
输出示例:
{
"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"
}
方法 2:使用 fake-useragent 库生成随机 User-Agent
fake-useragent 是一个第三方库,可以生成随机的、合法的 User-Agent 字符串。
安装
pip install fake-useragent
使用示例
from fake_useragent import UserAgent
import requests
ua = UserAgent()
url = "https://httpbin.org/user-agent"
# 随机生成一个 User-Agent
headers = {"User-Agent": ua.random}
response = requests.get(url, headers=headers)
print(response.json())
输出示例(每次运行可能不同):

{
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36"
}
指定浏览器类型
ua = UserAgent() chrome_ua = ua.chrome # Chrome 的 User-Agent firefox_ua = ua.firefox # Firefox 的 User-Agent print(chrome_ua)
方法 3:使用 mechanize 或 selenium 模拟浏览器行为
如果需要更高级的浏览器模拟(如 JavaScript 渲染),可以使用 selenium 或 mechanize。
使用 selenium 模拟浏览器
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 设置 Chrome 无头模式
options = Options()
options.add_argument("--headless")
options.add_argument("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")
driver = webdriver.Chrome(options=options)
driver.get("https://httpbin.org/user-agent")
print(driver.find_element("tag name", "body").text)
driver.quit()
方法 4:手动维护 User-Agent 列表
如果不想依赖第三方库,可以手动维护一个 User-Agent 列表,并随机选择。
import random
import requests
user_agents = [
"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 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0",
]
url = "https://httpbin.org/user-agent"
headers = {"User-Agent": random.choice(user_agents)}
response = requests.get(url, headers=headers)
print(response.json())
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
requests 手动设置 |
简单 HTTP 请求 | 简单直接 | 需要手动维护 User-Agent |
fake-useragent |
随机生成 User-Agent | 自动生成合法 UA | 需要安装第三方库 |
selenium |
模拟浏览器行为 | 支持 JS 渲染 | 较重,适合自动化测试 |
| 手动维护列表 | 精确控制 UA | 完全可控 | 需要自己维护列表 |
推荐:
- 如果只是简单的 HTTP 请求,使用
requests+fake-useragent是最方便的。 - 如果需要模拟完整浏览器行为(如爬取动态网页),使用
selenium。
希望这能帮到你!如果有其他需求,欢迎继续提问。

