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中的startswith和endswith函数使用实例
Aug 25 Python
Python中类的继承代码实例
Oct 28 Python
django使用图片延时加载引起后台404错误
Apr 18 Python
Python调用系统底层API播放wav文件的方法
Aug 11 Python
简单了解Django模板的使用
Dec 20 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
Sep 04 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
Django框架model模型对象验证实现方法分析
Oct 02 Python
Python版中国省市经纬度
Feb 11 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
Django前后端分离csrf token获取方式
Dec 25 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
一个用php3编写的简单计数器
2006/10/09 PHP
php中apc缓存使用示例
2013/12/25 PHP
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
PHP开发微信支付的代码分享
2014/05/25 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
根据经纬度计算地球上两点之间的距离js实现代码
2013/03/05 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
2016/01/14 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
记录Django开发心得
2014/07/16 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
python实现复制大量文件功能
2019/08/31 Python
python中matplotlib条件背景颜色的实现
2019/09/02 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
详解python itertools功能
2020/02/07 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
技术入股合作协议书
2014/10/07 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python
图文详解Nginx版本平滑升级方案
2021/09/15 Servers