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中fileno()方法的使用
May 24 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
python+selenium实现京东自动登录及秒杀功能
Nov 18 Python
python如何实现反向迭代
Mar 20 Python
Python3处理HTTP请求的实例
May 10 Python
详解用Python实现自动化监控远程服务器
May 18 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
关于Python 常用获取元素 Driver 总结
Nov 24 Python
python游戏开发的五个案例分享
Mar 09 Python
Django URL参数Template反向解析
Nov 24 Python
如何在pycharm中快捷安装pip命令(如pygame)
May 31 Python
如何在python中实现ECDSA你知道吗
Nov 23 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 screw加密php源代码
2013/06/20 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
js面向对象编程之如何实现方法重载
2014/07/02 Javascript
一个获取第n个元素节点的js函数
2014/09/02 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
2016/06/30 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
vuex实现简易计数器
2016/10/27 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
VUE重点问题总结
2018/03/19 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
python访问抓取网页常用命令总结
2017/04/11 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
python使用zip将list转为json的方法
2018/12/31 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
python实现日志按天分割
2019/07/22 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
经典c++面试题六
2012/01/18 面试题
学校七一活动方案
2014/01/19 职场文书
效能监察建议书
2014/05/19 职场文书
企业宣传口号
2014/06/12 职场文书
员工薪酬激励方案
2014/06/13 职场文书
禁毒宣传标语
2014/06/19 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书
60句有关成长的名言
2019/09/04 职场文书
vue动态绑定style样式
2022/04/20 Vue.js