Python反爬虫技术之防止IP地址被封杀的讲解


Posted in Python onJanuary 09, 2019

在使用爬虫爬取别的网站的数据的时候,如果爬取频次过快,或者因为一些别的原因,被对方网站识别出爬虫后,自己的IP地址就面临着被封杀的风险。一旦IP被封杀,那么爬虫就再也爬取不到数据了。

那么常见的更改爬虫IP的方法有哪些呢?

1,使用动态IP拨号器服务器。

动态IP拨号服务器的IP地址是可以动态修改的。其实动态IP拨号服务器并不是什么高大上的服务器,相反,属于配置很低的一种服务器。我们之所以使用动态IP拨号服务器,不是看中了它的计算能力,而是能够实现秒换IP。

动态IP拨号服务器有一个特点,就是每次拨号都会更换一个新的IP地址。多年前家庭中的上网方式大多采用的ADSL拨号上网,也就是断开网络后再拨号一次,外网IP就会换成另一个。

通常来讲,这个IP池很大,可能有多个AB号段,IP数量基本上用不完。对于爬虫来说,这简直是大杀器,能够轻松的解决封杀IP的限制。

使用动态IP拨号服务器,需要付费购买。

2,使用Tor代理服务器。

Tor(The onion router, 洋葱路由器)是互联网上用于保护隐私最有利的工具之一。如果我们不适用Tor,网络请求就会直接发送给目标服务器。

相比之下,如果我们使用tor发送网络请求,客户端就会选择一条随机路径到服务器。这条随机路径中间会经过多个Tor节点,而且使用洋葱路由加密技术,使得任何节点都不能偷取加密数据,并且该请求的传输路径难以追踪,也查不出起点在哪。

Python反爬虫技术之防止IP地址被封杀的讲解

因此,我们可以使用tor技术改变请求的IP地址,作为一种终极的防止IP封锁的爬虫方案。

最近在学习《Python网络爬虫从入门到实践》,了解到其中的关于反爬虫的一些话题,做一下学习笔记。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
Python列表(list)、字典(dict)、字符串(string)基本操作小结
Nov 28 Python
利用Python爬虫给孩子起个好名字
Feb 14 Python
Python使用time模块实现指定时间触发器示例
May 18 Python
Ubuntu 下 vim 搭建python 环境 配置
Jun 12 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
Sep 13 Python
python登录WeChat 实现自动回复实例详解
May 28 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
Aug 24 Python
Python+redis通过限流保护高并发系统
Apr 15 Python
不到20行实现Python代码即可制作精美证件照
Apr 24 Python
解决Django Haystack全文检索为空的问题
May 19 Python
基于python实现计算两组数据P值
Jul 10 Python
PyTorch dropout设置训练和测试模式的实现
May 27 Python
Python Pywavelet 小波阈值实例
Jan 09 #Python
python利用小波分析进行特征提取的实例
Jan 09 #Python
Python 实现中值滤波、均值滤波的方法
Jan 09 #Python
对Python信号处理模块signal详解
Jan 09 #Python
使用python实现语音文件的特征提取方法
Jan 09 #Python
对python中Librosa的mfcc步骤详解
Jan 09 #Python
Python中的枚举类型示例介绍
Jan 09 #Python
You might like
单位速度在实战中的运用
2020/03/04 星际争霸
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
php利用cookie实现访问次数统计代码
2011/05/19 PHP
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
2015/12/25 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
laravel实现于语言包的完美切换方法
2019/09/29 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
JS滚轮事件onmousewheel使用介绍
2013/11/01 Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
2013/12/02 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
jQuery实现html元素拖拽
2015/07/21 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
2015/11/01 Javascript
Bootstrap树形控件使用方法详解
2016/01/27 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
实列教程 一款基于jquery和css3的响应式二级导航菜单
2014/11/13 HTML / CSS
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
极简鞋类,赤脚的感觉:Lems Shoes
2019/08/06 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
珍珠奶茶店创业计划书
2014/01/11 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
详解OpenCV曝光融合
2022/04/29 Python