有效突破反爬虫的方法

由于现在许多企业都需要大量的数据,所以很多人学习,爬虫过程中会遇到反爬阻碍,不仅会影响服务器,另外也造成一定的竞争,那么爬虫怎么突破?与IPIDEA一起去了解一下应对的一些技巧。

控制下载频率大规模集中访问对服务器的影响较大,爬虫可以短时间增大服务器负载。这里需要注意的是:设定下载等待时间的范围控制,等待时间过长,不能满足短时间大规模抓取的要求,等待时间过短则很有可能被拒绝访问。在之前“从url获取HTML”的方法里,对于httpGet的配置设置了socket超时和连接connect超时,其实这里的时长不是绝对的,主要取决于目标网站对爬虫的控制。

另外,在scrapy框架里,专有参数可以设置下载等待时间download_delay,这个参数可以设置在setting.py里,也可以设置在spider里。

pc

移动

IP的访问频率被限制,一些平台为了防止多次访问网站,会在某个同一个IP在单元时间内超过一定的次数的时候,将禁止这个IP继续访问。对于这个限制IP访问效率,可以使用代理IP的方法来解决问题比如使用IPIDEA。

采用分布式爬取分布式爬取的也有很多Githubrepo。原理主要是维护一个所有集群机器能够有效分享的分布式队列。使用分布式爬取还有另外一个目的:大规模抓取,单台机器的负荷很大,况且速度很慢,多台机器可以设置一个master管理多台slave去同时爬取。

修改User-Agent最常见的就是伪装浏览器,修改User-Agent(用户代理)。User-Agent是指包含浏览器信息、操作系统信息等的一个字符串,也称之为一种特殊的网络协议。服务器通过它判断当前访问对象是浏览器、邮件客户端还是网络爬虫。在request.headers里可以查看user-agent,关于怎么分析数据包、查看其User-Agent等信息,这个在前面的文章里提到过。

具体方法可以把User-Agent的值改为浏览器的方式,甚至可以设置一个User-Agent池(list,数组,字典都可以),存放多个“浏览器”,每次爬取的时候随机取一个来设置request的User-Agent,这样User-Agent会一直在变化,防止被墙。

综上所述,爬虫怎么突破的方法比较多,上文从更换IP、控制下载频率、分布式爬取、修改User-Agent这四个方面介绍了突破机制的方法,从而实现数据的爬取。

经验分享 程序员 微信小程序 职场和发展