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实现发送email的几种常用方法
Aug 18 Python
Python随机数random模块使用指南
Sep 09 Python
python 3.5下xadmin的使用及修复源码bug
May 10 Python
python实现excel读写数据
Mar 02 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
Feb 18 Python
Python之Numpy的超实用基础详细教程
Oct 23 Python
python dataframe NaN处理方式
Dec 26 Python
python使用turtle库绘制奥运五环
Feb 24 Python
Python第三方库安装缓慢的解决方法
Feb 06 Python
浅谈Python数学建模之线性规划
Jun 23 Python
Python实现对齐打印 format函数的用法
Apr 28 Python
Python Matplotlib绘制动画的代码详解
May 30 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 中的一些经验积累
2006/10/09 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
PHP类的封装与继承详解
2015/09/29 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
2017/11/07 PHP
多广告投放代码 推荐
2006/11/13 Javascript
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
jquerydom对象的事件隐藏显示和对象数组示例
2013/12/10 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
mint-ui在vue中的使用示例
2018/04/05 Javascript
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
vue实现购物车案例
2020/05/30 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
Python做文本按行去重的实现方法
2016/10/19 Python
python-视频分帧&多帧合成视频实例
2019/12/10 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
Python基于template实现字符串替换
2020/11/27 Python
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
六道php面试题附答案
2014/06/05 面试题
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2015/09/07 面试题
自考毕业自我鉴定范文
2013/10/27 职场文书
集团公司人力资源部岗位职责
2014/01/03 职场文书
日本语毕业生自荐信
2014/02/01 职场文书
进口业务员岗位职责
2014/04/06 职场文书
文明寄语大全
2014/04/11 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书