Python爬虫技巧:使用fake-useragent库伪造随机User-Agent
本文介绍如何在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
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









