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中List的sort方法指南
Sep 01 Python
python读取json文件并将数据插入到mongodb的方法
Mar 23 Python
python实现一次创建多级目录的方法
May 15 Python
python线程池threadpool实现篇
Apr 27 Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 Python
Python常用爬虫代码总结方便查询
Feb 25 Python
Python3最长回文子串算法示例
Mar 04 Python
让Python脚本暂停执行的几种方法(小结)
Jul 11 Python
Python socket模块方法实现详解
Nov 05 Python
Python3操作读写CSV文件使用包过程解析
Apr 10 Python
Python命名空间namespace及作用域原理解析
Jun 05 Python
python flappy bird小游戏分步实现流程
Feb 15 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 截取字符串专题集合
2010/08/19 PHP
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
PHP实现的策略模式示例
2019/03/20 PHP
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
input 禁止输入特殊字符的四种实现方式
2016/08/24 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
js+html5实现复制文字按钮
2017/07/15 Javascript
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
Python中处理时间的几种方法小结
2015/04/09 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
Win8下python3.5.1安装教程
2020/07/29 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
python设计微型小说网站(基于Django+Bootstrap框架)
2019/07/08 Python
Python中 Global和Nonlocal的用法详解
2020/01/20 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
应届生会计求职信
2013/11/11 职场文书
网页设计个人找工作求职信
2013/11/28 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
公务员政审个人总结
2015/02/12 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
初中英语教学反思范文
2016/02/15 职场文书
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js