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设计模式大全
Jun 27 Python
Python中struct模块对字节流/二进制流的操作教程
Jan 21 Python
Python向日志输出中添加上下文信息
May 24 Python
Django中url的反向查询的方法
Mar 14 Python
python保存二维数组到txt文件中的方法
Nov 15 Python
利用Python计算KS的实例详解
Mar 03 Python
python实现图片横向和纵向拼接
Mar 05 Python
利用 Python ElementTree 生成 xml的实例
Mar 06 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
Apr 02 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
Jul 23 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 Python
Python pandas读取CSV文件的注意事项(适合新手)
Jun 20 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
php常用ODBC函数集(详细)
2013/06/24 PHP
Laravel框架中扩展函数、扩展自定义类的方法
2014/09/04 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
PHP获取数组中单列值的方法
2017/06/10 PHP
php连接sftp的作用以及实例代码
2019/09/23 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
javascript instanceof,typeof的区别
2010/03/24 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
总结十个Angular.js由浅入深的面试问题
2016/08/26 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
2017/10/26 Javascript
详解 微信小程序开发框架(MINA)
2019/05/17 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
Python struct模块解析
2014/06/12 Python
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
Python利用Beautiful Soup模块搜索内容详解
2017/03/29 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
python 编码规范整理
2018/05/05 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
2018/10/11 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
2019/05/13 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
打印机墨盒:123Inkjets
2017/02/16 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
学前教育毕业生自荐信
2013/10/29 职场文书
数学教研活动总结
2014/07/02 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
2015年班干部工作总结
2015/04/29 职场文书
企业法人任命书
2015/09/21 职场文书
JavaScript实现栈结构详细过程
2021/12/06 Javascript
解决 redis 无法远程连接
2022/05/15 Redis