Python爬虫小技巧之伪造随机的User-Agent


Posted in Python onSeptember 13, 2018

前言

不管是做开发还是做过网站的朋友们,应该对于User Agent一点都不陌生,User Agent 中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等

在Python爬虫的过程中经常要模拟UserAgent, 因此自动生成UserAgent十分有用

通过UA来判断不同的设备或者浏览器是开发者最常用的方式方法,这个也是对于Python反爬的一种策略,但是有盾就有矛啊

写好爬虫的原则只有一条:

就是让你的抓取行为和用户访问网站的真实行为尽量一致

1、伪造UA字符串,每次请求都使用随机生成的UA

为了减少复杂度,随机生成UA的功能通过第三方模块库fake-useragent实现,使用pip进行安装

pip install fake-useragent

2、生成一个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 相关文章推荐
Python装饰器的函数式编程详解
Feb 27 Python
简单谈谈python中的多进程
Nov 06 Python
Python栈算法的实现与简单应用示例
Nov 01 Python
Python用户推荐系统曼哈顿算法实现完整代码
Dec 01 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
pandas 数据归一化以及行删除例程的方法
Nov 10 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
Oct 14 Python
Python3实现配置文件差异对比脚本
Nov 18 Python
python实现ip地址的包含关系判断
Feb 07 Python
使用已经得到的keras模型识别自己手写的数字方式
Jun 29 Python
Python如何输出警告信息
Jul 30 Python
详细介绍python类及类的用法
May 31 Python
Python爬虫基础之XPath语法与lxml库的用法详解
Sep 13 #Python
Python爬虫常用小技巧之设置代理IP
Sep 13 #Python
python集合比较(交集,并集,差集)方法详解
Sep 13 #Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
Sep 13 #Python
Python字典创建 遍历 添加等实用基础操作技巧
Sep 13 #Python
python单例模式获取IP代理的方法详解
Sep 13 #Python
如何利用python制作时间戳转换工具详解
Sep 12 #Python
You might like
PHP多线程抓取网页实现代码
2010/07/22 PHP
PHP验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
php下Memcached入门实例解析
2015/01/05 PHP
Laravel学习基础之migrate的使用教程
2017/10/11 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
自己的js工具 Cookie 封装
2009/08/21 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
2019/08/02 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
Python升级导致yum、pip报错的解决方法
2017/09/06 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
基于pytorch的保存和加载模型参数的方法
2019/08/17 Python
python 循环数据赋值实例
2019/12/02 Python
python3 使用ssh隧道连接mysql的操作
2020/12/05 Python
如何通过python检查文件是否被占用
2020/12/18 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
无偿献血倡议书
2014/04/14 职场文书
卖车协议书
2014/04/21 职场文书
出售房屋协议书范本
2014/10/06 职场文书
学校政风行风整改方案
2014/10/25 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
优秀团队申报材料
2014/12/26 职场文书
财务稽核岗位职责
2015/04/13 职场文书
车辆管理制度范本
2015/08/05 职场文书
如何利用python创作字符画
2022/06/25 Python