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 相关文章推荐
Django框架中数据的连锁查询和限制返回数据的方法
Jul 17 Python
python爬取拉勾网职位数据的方法
Jan 24 Python
Python中常见的异常总结
Feb 20 Python
Python下调用Linux的Shell命令的方法
Jun 12 Python
python矩阵/字典实现最短路径算法
Jan 17 Python
Python 二叉树的层序建立与三种遍历实现详解
Jul 29 Python
python基于celery实现异步任务周期任务定时任务
Dec 30 Python
Python语言异常处理测试过程解析
Jan 08 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
Feb 26 Python
Python unittest 自动识别并执行测试用例方式
Mar 09 Python
python 如何区分return和yield
Sep 22 Python
Django缓存Cache使用详解
Nov 30 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中MVC模式的模板引擎开发经验分享
2011/03/23 PHP
php 获取百度的热词数据的代码
2012/02/18 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
使用js显示当前时间示例
2014/03/02 Javascript
node.js中的url.format方法使用说明
2014/12/10 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
使用Python编写vim插件的简单示例
2015/04/17 Python
Python实例一个类背后发生了什么
2016/02/09 Python
详解Python中的__new__、__init__、__call__三个特殊方法
2016/06/02 Python
利用Python实现Windows定时关机功能
2017/03/21 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
2018/05/16 Python
详解如何设置Python环境变量?
2019/05/13 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
亲属关系公证书
2014/04/08 职场文书
说明书怎么写
2014/05/06 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
用python开发一款操作MySQL的小工具
2021/05/12 Python
Java反应式框架Reactor中的Mono和Flux
2021/07/25 Java/Android
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL