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 26 Python
Python实现的简单hangman游戏实例
Jun 28 Python
python 简单的绘图工具turtle使用详解
Jun 21 Python
python SSH模块登录,远程机执行shell命令实例解析
Jan 12 Python
Python iter()函数用法实例分析
Mar 17 Python
从django的中间件直接返回请求的方法
May 30 Python
python批量修改图片大小的方法
Jul 24 Python
利用python修改json文件的value方法
Dec 31 Python
Python使用import导入本地脚本及导入模块的技巧总结
Aug 07 Python
python中property属性的介绍及其应用详解
Aug 29 Python
python编写俄罗斯方块
Mar 13 Python
Python中os模块的简单使用及重命名操作
Apr 17 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文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
深入PHP magic quotes的详解
2013/06/17 PHP
基于PHP中的常用函数回顾
2013/07/11 PHP
获取URL文件名后缀
2013/10/24 PHP
摘自启点的main.js
2008/04/20 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
JSON 数据格式介绍
2012/01/13 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
Json序列化和反序列化方法解析
2013/12/19 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
jQuery实现简单的列表式导航菜单效果代码
2015/08/31 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
opencv python如何实现图像二值化
2020/02/03 Python
如何在python中判断变量的类型
2020/07/29 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
Html5 new XMLHttpRequest()监听附件上传进度
2021/01/14 HTML / CSS
采用专利算法搜索最廉价的机票:CheapAir
2016/09/10 全球购物
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
Ref与out有什么不同
2012/11/24 面试题
什么是测试驱动开发(TDD)
2012/02/15 面试题
函授本科自我鉴定
2014/02/04 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
2016公司新年问候语
2015/11/11 职场文书
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js