Python爬虫如何避免爬取网站访问过于频繁

Python019

Python爬虫如何避免爬取网站访问过于频繁,第1张

一. 关于爬虫

爬虫,是一种按照一定的规则自动地抓取互联网信息的程序。本质是利用程序获取对我们有利的数据。

反爬虫,从不是将爬虫完全杜绝;而是想办法将爬虫的访问量限制在一个可接纳的范围,不要让它过于频繁。

二. 提高爬虫效率的方法

协程。采用协程,让多个爬虫一起工作,可以大幅度提高效率。

多进程。使用CPU的多个核,使用几个核就能提高几倍。

多线程。将任务分成多个,并发(交替)的执行。

分布式爬虫。让多个设备去跑同一个项目,效率也能大幅提升。

打包技术。可以将python文件打包成可执行的exe文件,让其在后台执行即可。

其他。比如,使用网速好的网络等等。

三. 反爬虫的措施

限制请求头,即request header。解决方法:我们可以填写user-agent声明自己的身份,有时还要去填写origin和referer声明请求的来源。

限制登录,即不登录就不能访问。解决方法:我们可以使用cookies和session的知识去模拟登录。

复杂的交互,比如设置“验证码”来阻拦登录。这就比较难做,解决方法1:我们用Selenium去手动输入验证码;方法2:我们用一些图像处理的库自动识别验证码(tesserocr/pytesserart/pillow)。

ip限制。如果这个IP地址,爬取网站频次太高,那么服务器就会暂时封掉来自这个IP地址的请求。 解决方法:使用time.sleep()来对爬虫的速度进行限制,建立IP代理池或者使用IPIDEA避免IP被封禁。

问题就是出现在我们CC防护规则没有设置好,我们在配置安全狗的CC防护规则时设置太严格才会导致这样的拦截。所以修改CC防护规则即可解决。

具体修改步骤如下:

第一步:首先我们打开网站安全狗的CC防护规则页面,如图所示:

我们可以先把单位时间内的  允许最大请求数目调大一点,比如增加10次,然后保存一下,重启一下web服务,使修改规则后可以立即生效。

第二步:修改完规则后,再尝试访问看看,如果不行就在调试,直到不会拦截为止。

第三步:如果这时您有将“会话验证模式”调到高级模式或者中级模式,我们建议您在调整数值还没有效果的情况下,将会话验证模式调为初级看看。调完之后,保存、重启一下web服务,使修改规则后可以立即生效。

注:

(1)服务器安全狗也有CC防御功能,相对网站安全狗来说,服务器安全狗因为是从服务器的驱动层进行防御,所以效果明显,所以当您调整完网站安全狗后,服务器安全狗也建议做适当的调整,相对来说服务器安全狗可以设置相对严格一点,如图:

(2)会话验证模式分为:初级模式、中级模式、高级模式。如果平时没什么攻击,建议管理员们使用初级模式就行,当受到间断性攻击时,我们可以使用中级模式,当服务器网站遭受频繁攻击,且攻击量大时,我们可以使用高级模式进行防护。

(3)如果您是访客,访问别人的网站,或者您的网站是寄在空间商那边,没有装过安全狗,那么您可以联系网站管理员反馈一下,或者空间商反馈该情况,问题就可以解决了。

(4)针对“您的请求过于频繁,已被管理员设置拦截”的页面,管理员们,可以通过在CC防护模块的 “修改拦截提示信息”进行修改,设置。方便访客遇到问题联系你们解决。