您的位置:新闻资讯 >文章内容
反爬虫机制会杀死所有的爬虫吗?限制IP怎么办
来源:本站 作者:admin 时间:2019-04-28 14:58:14

反爬虫机制对于爬虫工程师来说并不陌生,可以说爬虫与反爬虫是相爱相杀的,没有爬虫就不存在反爬虫,没有了反爬虫,爬虫也不用发展了,简单粗暴的爬虫直接把服务器搞死了,其他人就没得玩了,最后自然玩不下去了。


反爬虫机制会杀死所有的爬虫吗


所以,反爬虫机制的最初目标就是反抗那些简单粗暴的爬虫,他们会疯狂的访问爬取网站,给服务器带来巨大的压力,造成服务器不能正常工作。那么,当爬虫合理的行为或者说伪装度比较高的行为,对于反爬虫机制来说,未必不能网开一面,毕竟那样和真实用户没什么区别了,正所谓,水至清则无鱼,反爬虫机制不可能连真实用户也杀死。


那么反爬虫机制是怎样反抗一些简单除暴的爬虫呢?


一、header检验


最简单的反爬虫机制,就是检查HTTP请求的Headers信息,包括User-Agent, Referer、Cookies等。


1、User-Agent


User-Agent是检查用户所用客户端的种类和版本。最简单的解决方法就是建立一个很多浏览器User-Agent的列表,然后在每次请求中,随机选取一个真实浏览器的User-Agent。


2、Referer


Referer是检查此请求由哪里来,通常可以做图片的盗链判断。简单的解决方法可以这样:如果某个页面url是通过之前爬取的页面提取到,自动把之前爬取的页面url作为Referfer。当然,也可以自定义一个合理的Referfer列表,每次请求随机选择一个。


3、Cookies


网站可能会检测Cookie中session_id的使用次数,如果超过限制,就触发反爬策略。所以可以设置 COOKIES_ENABLED=False 让请求不带Cookies。如果网站强制开启Cookis,可以另写一个简单的爬虫,定时向目标网站发送不带Cookies的请求,提取响应中Set-cookie字段信息并保存。爬取网页时,把存储起来的Cookies带入Headers中。


二、限制IP的请求数


如果某一个IP的请求速度过快或者反人类,就会触发反爬机制,有两种解决方法,一种是放慢爬取速度,代价是效率降低,可能完不成任务;另一种是使用代理IP,代价是需要付出一些软妹币,免费的代理IP效果实在是太差,不推荐使用,这里推荐精灵代理平台,IP日流水量大,高效稳定,性价比高。


三、动态加载


现在越来越多的网站使用ajax动态加载内容,这时候可以先截取ajax请求分析一下,有可能根据ajax请求构造出相应的API请求的URL就可以直接获取想要的内容,通常是json格式,反而还不用去解析HTML。


然而,很多时候ajax请求都会经过后端鉴权,不能直接构造URL获取。这时就可以通过PhantomJS+Selenium模拟浏览器行为,抓取经过js渲染后的页面。


需要注意的是,使用Selenium后,请求不再由Scrapy的Downloader执行,所以之前添加的请求头等信息都会失效,需要在Selenium中重新添加。


另外,调用PhantomJs需要指定PhantomJs的可执行文件路径,通常是将该路径添加到系统的path路径,让程序执行时自动去path中寻找。我们的爬虫经常会放到crontab中定时执行,而crontab中的环境变量和系统的环境变量不同,所以就加载不到PhamtonJs需要的路径,所以最好是在申明时指定路径:


相关文章内容简介
在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
HTTP代理IP爬虫
客服电话
13318873961