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 相关文章推荐
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
Jun 25 Python
深入浅析python继承问题
May 29 Python
老生常谈Python进阶之装饰器
May 11 Python
详解Python import方法引入模块的实例
Aug 02 Python
使用Pyinstaller的最新踩坑实战记录
Nov 08 Python
python print输出延时,让其立刻输出的方法
Jan 07 Python
Python微医挂号网医生数据抓取
Jan 24 Python
利用Python+阿里云实现DDNS动态域名解析的方法
Apr 01 Python
Python3的unicode编码转换成中文的问题及解决方案
Dec 10 Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 Python
Python 开发工具通过 agent 代理使用的方法
Sep 27 Python
python 常见的反爬虫策略
Sep 27 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数据库操作面向对象的优点
2006/10/09 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
js技巧--转义符"\"的妙用
2007/01/09 Javascript
JavaScript去掉空格的方法集合
2010/12/28 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
ECHO.js 纯javascript轻量级延迟加载的实例代码
2016/05/24 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
js 获取今天以及过去日期
2017/04/11 Javascript
es6在react中的应用代码解析
2017/11/08 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
pycharm远程调试openstack代码
2017/11/21 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
Python中Numpy ndarray的使用详解
2019/05/24 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
flask的orm框架SQLAlchemy查询实现解析
2019/12/12 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
2020/03/06 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
导师推荐信范文
2014/05/09 职场文书
学生会自荐信
2019/05/16 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python
用Python可视化新冠疫情数据
2022/01/18 Python
服务器SVN搭建图文安装过程
2022/06/21 Servers