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中bisect的用法
Sep 23 Python
Python标准库之sqlite3使用实例
Nov 25 Python
解决Python 遍历字典时删除元素报异常的问题
Sep 11 Python
Python实现字符串反转的常用方法分析【4种方法】
Sep 30 Python
微信跳一跳python辅助脚本(总结)
Jan 11 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
Apr 19 Python
Python实现朴素贝叶斯分类器的方法详解
Jul 04 Python
pandas筛选某列出现编码错误的解决方法
Nov 07 Python
Python3爬虫学习入门教程
Dec 11 Python
利用Python代码实现一键抠背景功能
Dec 29 Python
计算Python Numpy向量之间的欧氏距离实例
May 22 Python
2021年pycharm的最新安装教程及基本使用图文详解
Apr 03 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
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
PDO::rollBack讲解
2019/01/29 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
用jquery来定位
2007/02/20 Javascript
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
2019/11/19 Javascript
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
2014/05/06 Python
Python类的专用方法实例分析
2015/01/09 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
python跳出双层for循环的解决方法
2019/06/24 Python
Django工程的分层结构详解
2019/07/18 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
2018/01/10 HTML / CSS
大学生毕业求职的自我评价
2013/09/29 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
小学校长开学致辞
2015/07/29 职场文书
员工聘用合同范本
2015/09/21 职场文书