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 相关文章推荐
Tornado服务器中绑定域名、虚拟主机的方法
Aug 22 Python
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
Nov 05 Python
Python封装shell命令实例分析
May 05 Python
python常用知识梳理(必看篇)
Mar 23 Python
python中os和sys模块的区别与常用方法总结
Nov 14 Python
Python对列表去重的多种方法(四种方法)
Dec 05 Python
python生成圆形图片的方法
Mar 25 Python
Python使用xlwt模块操作Excel的方法详解
Mar 27 Python
Python+pandas计算数据相关系数的实例
Jul 03 Python
python+opencv实现高斯平滑滤波
Jul 21 Python
python之列表推导式的用法
Nov 29 Python
PyTorch中clone()、detach()及相关扩展详解
Dec 09 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 自定义错误处理函数的使用详解
2013/05/10 PHP
php数据库操作model类(使用__call方法)
2016/11/16 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
2018/06/09 PHP
浏览器页面区域大小的js获取方法
2013/09/21 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
js创建对象的方法汇总
2016/01/07 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
JS实现队列的先进先出功能示例
2017/05/10 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
python基础教程之数字处理(math)模块详解
2014/03/25 Python
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
专科毕业生就业推荐信
2013/11/01 职场文书
百度吧主申请感言
2014/01/12 职场文书
计算机专业自荐信
2014/05/24 职场文书
民主生活会发言材料
2014/10/20 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
思品教学工作总结
2015/08/10 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server
世界十大动漫制作公司排行榜,迪士尼上榜,第二是美国代表性文化符
2022/03/18 欧美动漫
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL