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编程-将Python程序转化为可执行程序[整理]
Apr 09 Python
Python中的urllib模块使用详解
Jul 07 Python
Python 列表理解及使用方法
Oct 27 Python
python timestamp和datetime之间转换详解
Dec 11 Python
Python matplotlib的使用并自定义colormap的方法
Dec 13 Python
教你一步步利用python实现贪吃蛇游戏
Jun 27 Python
django 单表操作实例详解
Jul 30 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
Jan 22 Python
python GUI模拟实现计算器
Jun 22 Python
Python配置pip国内镜像源的实现
Aug 20 Python
Python通过format函数格式化显示值
Oct 17 Python
python 生成正态分布数据,并绘图和解析
Dec 21 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
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
Node.js中的cluster模块深入解读
2018/06/11 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
2018/09/21 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
JS一次前端面试经历记录
2020/03/19 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python中字符串类型json操作的注意事项
2017/05/02 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
python3实现高效的端口扫描
2019/08/31 Python
Python如何定义接口和抽象类
2020/07/28 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
送给他或她的礼物:FUN.com
2018/08/17 全球购物
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
LN-CC美国:伦敦时尚生活的缩影
2019/02/19 全球购物
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
叶问观后感
2015/06/15 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
python实现简单石头剪刀布游戏
2021/10/24 Python
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript