Python反爬虫伪装浏览器进行爬虫


Posted in Python onFebruary 28, 2020

对于爬虫中部分网站设置了请求次数过多后会封杀ip,现在模拟浏览器进行爬虫,也就是说让服务器认识到访问他的是真正的浏览器而不是机器操作

简单的直接添加请求头,将浏览器的信息在请求数据时传入:

打开浏览器--打开开发者模式--请求任意网站

如下图:找到请求的的名字,打开后查看headers栏,找到User-Agent,复制。然后添加到请求头中

Python反爬虫伪装浏览器进行爬虫

代码如下:

import requests
url = 'https://www.baidu.com'
headers ={
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) '
           'Chrome/65.0.3325.181 Safari/537.36'
    }
rq = requests.get(url=url, headers=headers)
print(rq.text)

更深的伪装浏览器,添加多个浏览器信息,每次请求的时候随机发送浏览器信息,让服务器了解不是一个浏览器一直在访问,(可以百度查找user-agent)

代码如下:

import requests
import random

url = 'https://www.baidu.com'
headers_lists =(
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) '
           'Chrome/65.0.3325.181 Safari/537.36',
    'Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;Maxthon2.0',
    'Opera/9.80(Android2.3.4;Linux;Operamobi/adr-1107051709;U;zh-cn)Presto/2.8.149Version/11.10',
    'Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1',
    'Mozilla/5.0(Android;Linuxarmv7l;rv:5.0)Gecko/Firefox/5.0fennec/5.0',)

rq = requests.get(url=url,headers={'User-Agent':random.choice(headers_lists)})
print(rq.text)

完整的请求体解释:

以下是笔者访问百度的请求体。

Python反爬虫伪装浏览器进行爬虫

Accept:浏览器端可以接受的媒体类型

Accept-Encoding:浏览器申明自己接收的编码方法

Accept-Language:浏览器申明自己接收的语言

Connection:keep-alive 客户端和服务器之间还在连接中,如果关闭就是close

Host:请求报头域主要用于指定被请求资源的Internet主机和端口号

User-Agent:使用的操作系统和浏览器的名称和版本

Cookie:是用来存储一些用户信息以便让服务器辨别用户身份的

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现电子词典
Apr 23 Python
Python对象的深拷贝和浅拷贝详解
Aug 25 Python
Python中with及contextlib的用法详解
Jun 08 Python
Python实现统计代码行的方法分析
Jul 12 Python
对python周期性定时器的示例详解
Feb 19 Python
关于python多重赋值的小问题
Apr 17 Python
利用anaconda保证64位和32位的python共存
Mar 09 Python
python动态文本进度条的实例代码
Jan 22 Python
python调用API接口实现登陆短信验证
May 10 Python
Python基于pandas爬取网页表格数据
May 11 Python
pyecharts调整图例与各板块的位置间距实例
May 16 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
Oct 15 Python
使用wxpy实现自动发送微信消息功能
Feb 28 #Python
解决ROC曲线画出来只有一个点的问题
Feb 28 #Python
Python编程快速上手——正则表达式查找功能案例分析
Feb 28 #Python
利用python画出AUC曲线的实例
Feb 28 #Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 #Python
AUC计算方法与Python实现代码
Feb 28 #Python
Python编程快速上手——Excel表格创建乘法表案例分析
Feb 28 #Python
You might like
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
2015/10/29 Javascript
javascript实现表单验证
2016/01/29 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
Angularjs为ng-click事件传递参数
2017/06/15 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
下载给定网页上图片的方法
2014/02/18 Python
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
python 剪切移动文件的实现代码
2018/08/02 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
基于python3生成标签云代码解析
2020/02/18 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
python操作yaml说明
2020/04/08 Python
Flask处理Web表单的实现方法
2021/01/31 Python
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
初中生个人学习的自我评价
2013/12/04 职场文书
荷叶母亲教学反思
2014/04/30 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
幼师辞职信怎么写
2015/02/27 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
2015年语文教师工作总结
2015/05/25 职场文书
青年干部培训班学习心得体会
2016/01/06 职场文书