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中的lstrip()方法使用简介
May 19 Python
python 3.5下xadmin的使用及修复源码bug
May 10 Python
Python列表删除的三种方法代码分享
Oct 31 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
Dec 20 Python
python切片及sys.argv[]用法详解
May 25 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
May 31 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
Python笔记之代理模式
Nov 20 Python
python计算二维矩形IOU实例
Jan 18 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
Feb 17 Python
scrapy中如何设置应用cookies的方法(3种)
Sep 22 Python
Python字符串的15个基本操作(小结)
Feb 03 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小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
PHP empty函数报错解决办法
2014/03/06 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
一个js实现的所谓的滑动门
2007/05/23 Javascript
javascript window对象属性整理
2009/10/24 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
javascript模拟命名空间
2015/04/17 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
vue组件与复用详解
2018/04/08 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
Django框架 querySet功能解析
2019/09/04 Python
python flask搭建web应用教程
2019/11/19 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
python3.7添加dlib模块的方法
2020/07/01 Python
python raise的基本使用
2020/09/10 Python
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
Yummie官方网站:塑身衣和衣柜必需品
2019/10/29 全球购物
广播节目策划方案
2014/05/23 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
化妆品促销活动总结
2015/05/07 职场文书
如何利用golang运用mysql数据库
2022/03/13 Golang