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中的列表与位运算符
Oct 12 Python
Python 基于Twisted框架的文件夹网络传输源码
Aug 28 Python
解决python2.7用pip安装包时出现错误的问题
Jan 23 Python
Python中super函数的用法
Nov 17 Python
pandas.DataFrame选取/排除特定行的方法
Jul 03 Python
Python合并多个Excel数据的方法
Jul 16 Python
Python 实现取多维数组第n维的前几位
Nov 26 Python
Python 安装 virturalenv 虚拟环境的教程详解
Feb 21 Python
python filecmp.dircmp实现递归比对两个目录的方法
May 22 Python
python如何删除文件、目录
Jun 23 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 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
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
php gzip压缩输出的实现方法
2013/04/27 PHP
JavaScript 乱码问题
2009/08/06 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
JavaScript如何把两个数组对象合并过程解析
2019/10/10 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
详细介绍Python中的偏函数
2015/04/27 Python
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
python装饰器实例大详解
2017/10/25 Python
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
python3下载抖音视频的完整代码
2019/06/05 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
HTML5计时器小例子
2013/10/15 HTML / CSS
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
缓刑人员的思想汇报
2014/01/11 职场文书
小学生运动会报道稿
2014/09/12 职场文书
元旦标语大全
2014/10/09 职场文书
党员个人批评与自我批评
2014/10/14 职场文书
Python作用域和名称空间的详细介绍
2022/04/13 Python
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技