Python爬虫技巧:使用fake-useragent库伪造随机User-Agent

周叙
周叙
发布时间:2026-10-13 | 7人浏览过
原创

本文介绍如何在Python爬虫中通过fake-useragent库生成随机User-Agent以绕过反爬机制。详细讲解安装方法、调用API获取特定浏览器UA及随机UA的代码示例,并提供手动维护UA列表的替代方案,帮助开发者模拟真实用户行为。

前言

对于从事开发或网站运营的人员来说,User Agent(用户代理,简称UA)并不陌生。UA是一个特殊的HTTP请求头字符串,服务器通过它来识别客户端使用的操作系统及其版本、CPU类型、浏览器品牌及版本、渲染引擎、语言以及安装的插件等信息。

在进行Python爬虫开发时,模拟User Agent是常见需求,因此能够自动生成UA字符串显得尤为实用。

开发者通常利用UA来区分不同的设备或浏览器,这已成为Python爬虫应对反爬策略的常用手段。然而,道高一尺魔高一丈,反爬与反反爬始终存在博弈。

编写高效爬虫的核心原则仅有一条:

确保抓取行为尽可能贴近真实用户的访问行为。

具体而言,包括伪造UA字符串,并在每次请求时调用随机生成的UA。

为了简化实现复杂度,推荐使用第三方模块库fake-useragent来生成随机UA。可通过pip命令进行安装。

pip install fake-useragent

生成一个UA字符串的代码示例如下:

from fake_useragent import UserAgent
 ua = UserAgent()

以下是各主流浏览器的User-Agent格式示例。

该库还具备随机生成各浏览器UA的功能。

例如,获取IE浏览器的UA:

print(ua.ie)

Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)

获取Opera浏览器的UA:

print(ua.opera)

Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.6.37 Version/11.00

获取Chrome浏览器的UA:

print(ua.chrome)

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2

获取Firefox浏览器的UA:

print(ua.firefox)

Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1

获取Safari浏览器的UA:

print(ua.safari)

Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25

随机User-Agent生成示例

编写爬虫时,最实用的技巧是能够随意变换headers,并确保其具有足够的随机性。

这里展示了三种随机生成UA的方法,三次打印结果各不相同,随机性较强,使用十分便捷。

print(ua.random)
print(ua.random)
print(ua.random)

Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, likeGecko) Chrome/37.0.2062.124 Safari/537.36

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36

如果不希望依赖该库,也可以自行搜集一些UA字符串,保存为文本文件,然后在程序中读取使用。

附:常用User-Agent列表

USER_AGENTS = [
 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
 "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
 "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
 "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
 "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
 "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
 "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
 "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",
 "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",
 "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",
 "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",
 "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5",
 "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6",
 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",
 "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",
]

总结

以上就是本文的全部内容,希望这些内容能为大家的学习或工作提供参考价值。如有疑问,欢迎留言交流,感谢对本站的支持。

原文链接:https://qq52o.me/2281.html

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表