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实现在Linux系统下更改当前进程运行用户
Feb 04 Python
python3实现暴力穷举博客园密码
Jun 19 Python
python中如何使用朴素贝叶斯算法
Apr 06 Python
python计算auc指标实例
Jul 13 Python
python ftp 按目录结构上传下载的实现代码
Sep 12 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
对Python中class和instance以及self的用法详解
Jun 26 Python
python实现关闭第三方窗口的方法
Jun 28 Python
django ManyToManyField多对多关系的实例详解
Aug 09 Python
django实现支付宝支付实例讲解
Oct 17 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 Python
Python绘制散乱的点构成的图的方法
Apr 21 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
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
域名和cookie问题(域名后缀)
2012/10/10 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
2015/07/29 PHP
yii2中使用Active Record模式的方法
2016/01/09 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
jQuery中trigger()方法用法实例
2015/01/19 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
浅谈ElementUI中switch回调函数change的参数问题
2018/08/24 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
布同 统计英文单词的个数的python代码
2011/03/13 Python
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
Python算法应用实战之队列详解
2017/02/04 Python
python多进程控制学习小结
2018/10/31 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
flask实现验证码并验证功能
2019/12/05 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
什么是python的必选参数
2020/06/21 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
HTML5中图片之间的缝隙完美解决方法
2017/07/07 HTML / CSS
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
思想品德课教学反思
2014/02/10 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
幼儿园小班家长评语
2014/12/30 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
Python中super().__init__()测试以及理解
2021/12/06 Python
python三子棋游戏
2022/05/04 Python
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL