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的身份证号码自动生成程序
Aug 15 Python
浅谈Python基础之I/O模型
May 11 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
Jan 02 Python
在CentOS6上安装Python2.7的解决方法
Jan 09 Python
python中int与str互转方法
Jul 02 Python
Django项目中添加ldap登陆认证功能的实现
Apr 04 Python
python程序控制NAO机器人行走
Apr 29 Python
python操作小程序云数据库实现简单的增删改查功能
Jun 06 Python
解决pycharm remote deployment 配置的问题
Jun 27 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
python3 re返回形式总结
Nov 20 Python
图神经网络GNN算法
May 11 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
单位速度在实战中的运用
2020/03/04 星际争霸
咖啡的传说和历史
2021/03/03 新手入门
论坛头像随机变换代码
2006/10/09 PHP
PHP读取文件并可支持远程文件的代码分享
2012/10/03 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
PHP中的traits简单使用实例
2015/05/13 PHP
php动态函数调用方法
2015/05/21 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
js正文内容高亮效果的实现方法
2013/06/30 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
2017/07/20 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
如何用 Python 制作一个迷宫游戏
2021/02/25 Python
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
精选干货:Java精选笔试题附答案
2014/01/18 面试题
社区安全检查制度
2014/02/03 职场文书
财务科科长岗位职责
2014/03/10 职场文书
公司管理建议书范文
2014/03/12 职场文书
企业业务员岗位职责
2014/03/14 职场文书
试用期辞职信范文
2015/03/02 职场文书
小学国庆节活动总结
2015/03/23 职场文书
红色经典电影观后感
2015/06/18 职场文书
情感电台广播稿
2015/08/18 职场文书
大学生活委员竞选稿
2015/11/21 职场文书
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技