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中的文本处理
Apr 11 Python
python 捕获shell脚本的输出结果实例
Jan 04 Python
对python中for、if、while的区别与比较方法
Jun 25 Python
python实现图片筛选程序
Oct 24 Python
详解python调用cmd命令三种方法
Jul 08 Python
python 实现GUI(图形用户界面)编程详解
Jul 17 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
Nov 19 Python
Python selenium的基本使用方法分析
Dec 21 Python
Tensorflow分批量读取数据教程
Feb 07 Python
在Mac中PyCharm配置python Anaconda环境过程图解
Mar 11 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
Python内置数据结构列表与元组示例详解
Aug 04 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中的post_class与get_post_class函数
2016/01/04 PHP
详解PHP序列化和反序列化原理
2018/01/15 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
jquery创建并行对象或者合并对象的实现代码
2012/10/10 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
实例讲解Python中SocketServer模块处理网络请求的用法
2016/06/28 Python
python交互式图形编程实例(二)
2017/11/17 Python
Python找出最小的K个数实例代码
2018/01/04 Python
Python对多属性的重复数据去重实例
2018/04/18 Python
python处理“
2019/06/10 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
python实现飞机大战项目
2020/03/11 Python
新西兰航空中国官网:Air New Zealand China
2018/07/24 全球购物
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
数学专业推荐信范文
2013/11/21 职场文书
会计专业毕业自荐书范文
2014/02/08 职场文书
人力资源部经理的岗位职责
2014/03/04 职场文书
实习协议书范本
2014/09/25 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL