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脚本来删除指定容量以上的文件的教程
May 04 Python
wxPython中listbox用法实例详解
Jun 01 Python
让Python更加充分的使用Sqlite3
Dec 11 Python
Python实现string字符串连接的方法总结【8种方式】
Jul 06 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
python基础知识(一)变量与简单数据类型详解
Apr 17 Python
python使用mitmproxy抓取浏览器请求的方法
Jul 02 Python
python标记语句块使用方法总结
Aug 05 Python
python求解汉诺塔游戏
Jul 09 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 Python
利用python实现后端写网页(flask框架)
Feb 28 Python
pandas进行数据输入和输出的方法详解
Mar 23 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 extract 将数组拆分成多个变量的函数
2010/06/30 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
php如何连接sql server
2015/10/16 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
2016/11/16 PHP
CL vs ForZe BO5 第一场 2.13
2021/03/10 DOTA
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
一个JS的日期格式化算法示例
2013/07/31 Javascript
angularJS 入门基础
2015/02/09 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
2016/09/04 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
Python 专题四 文件基础知识
2017/03/20 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
工作迟到检讨书
2014/02/21 职场文书
中西医专业毕业生职业规划书
2014/02/24 职场文书
安全技术说明书
2014/05/09 职场文书
电子专业求职信
2014/06/19 职场文书
捐资助学感谢信
2015/01/21 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
独生子女证明范本
2015/06/19 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书