Python爬虫防封ip的一些技巧


Posted in Python onAugust 06, 2020

在编写爬虫爬取数据的时候,因为很多网站都有反爬虫措施,所以很容易被封IP,就不能继续爬了。在爬取大数据量的数据时更是瑟瑟发抖,时刻担心着下一秒IP可能就被封了。

本文就如何解决这个问题总结出一些应对措施,这些措施可以单独使用,也可以同时使用,效果更好。

伪造User-Agent

在请求头中把User-Agent设置成浏览器中的User-Agent,来伪造浏览器访问。比如:

headers ={'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'} resp = requests.get(url,headers = headers)

还可以先收集多种浏览器的User-Agent,每次发起请求时随机从中选一个使用,可以进一步提高安全性:

Python爬虫防封ip的一些技巧

把上面随机选择一个User-Agent的代码封装成一个函数:

Python爬虫防封ip的一些技巧

在每次重复爬取之间设置一个随机时间间隔

比如:

time.sleep(random.randint(0,3)) # 暂停0~3秒的整数秒,时间区间:[0,3]

或:

time.sleep(random.random()) # 暂停0~1秒,时间区间:[0,1)

伪造cookies

若从浏览器中可以正常访问一个页面,则可以将浏览器中的cookies复制过来使用,比如:

Python爬虫防封ip的一些技巧

注:用浏览器cookies发起请求后,如果请求频率过于频繁仍会被封IP,这时可以在浏览器上进行相应的手工验证(比如点击验证图片等),然后就可以继续正常使用该cookies发起请求。

使用代理

可以换着用多个代理IP来进行访问,防止同一个IP发起过多请求而被封IP,比如:

附:GitHub上的一个"反反爬虫"项目

道高一尺魔高一丈,你有反爬虫措施,那我也有各种"反反爬虫"的措施,GitHub上就有一位大神专门整理了一个这样的项目:Anti-Anti-Spider,链接地址为:github.com/luyishisi/An可以研究一下。

以上就是Python爬虫防封ip的一些技巧的详细内容,更多关于Python爬虫防封ip的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python 用户登录验证的小例子
Mar 06 Python
关于Python中异常(Exception)的汇总
Jan 18 Python
python数据结构之列表和元组的详解
Sep 23 Python
Python3 replace()函数使用方法
Mar 19 Python
Python 使用Numpy对矩阵进行转置的方法
Jan 28 Python
详解Python数据分析--Pandas知识点
Mar 23 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
Python numpy.zero() 初始化矩阵实例
Nov 27 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
Apr 07 Python
Python实现动态循环输出文字功能
May 07 Python
Python2及Python3如何实现兼容切换
Sep 01 Python
Python+Selenium实现读取网易邮箱验证码
Mar 13 Python
Python无损压缩图片的示例代码
Aug 06 #Python
通过实例简单了解python yield使用方法
Aug 06 #Python
Python切片列表字符串如何实现切换
Aug 06 #Python
Python爬虫爬取微信朋友圈
Aug 06 #Python
Python变量及数据类型用法原理汇总
Aug 06 #Python
基于logstash实现日志文件同步elasticsearch
Aug 06 #Python
如何解决pycharm调试报错的问题
Aug 06 #Python
You might like
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
织梦sitemap地图实时推送给百度的教程
2015/08/03 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
php中Ioc(控制反转)和Di(依赖注入)
2017/05/07 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
javascript实现移动端上的触屏拖拽功能
2016/03/04 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
解决vue+webpack打包路径的问题
2018/03/06 Javascript
vue + vuex todolist的实现示例代码
2018/03/09 Javascript
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
[25:59]Newbee vs TNC 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现简单http服务器
2018/04/12 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
Python3.5字符串常用操作实例详解
2019/05/01 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
Python datetime模块使用方法小结
2020/06/18 Python
用opencv给图片换背景色的示例代码
2020/07/08 Python
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
简述synchronized和java.util.concurrent.locks.Lock的异同
2014/12/08 面试题
2015年大学生党员承诺书
2015/04/27 职场文书
男生贾里读书笔记
2015/06/30 职场文书
在JavaScript中如何使用宏详解
2021/05/06 Javascript
Python如何配置环境变量详解
2021/05/18 Python
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL