一、前言
一般而言,抓取稍微正规一点的网站,都会有反网络爬虫的制约。反网络爬虫主要有以下几种方式:
根据UA判断。这是最低级的判断,一般反网络爬虫不会用这个做唯一判断,因为反反网络爬虫非常容易,直接随机UA即可解决。
根据单IP频繁访问判断。这个判断简单,而且反反网络爬虫比较费力,反网络爬虫绝佳方案。需采用多IP抓取。
根据Cookie判断,例如根据会员制账号密码登陆,判断单账号短时间抓取次数判断。这个反反网络爬虫也很费力。需采用多账号抓取。
动态页面加载。这个考验前端工程师的功底,假如前端写的好,各种JS判断,各种逻辑,像百度,淘宝一样,post登录很难。较好的方法,但是对于大牛,还是防不胜防。反反网络爬虫多采用渲染浏览器抓取,效率低下。
采用验证码。这里要不是登录的时候有验证码,要不是判断是网络爬虫时,不封IP,而是采用验证码验证,例如链家网。验证码是反网络爬虫性价比较高的方案。反反网络爬虫一般接入OCR验证码识别平台或是人工打码平台,亦或是利用Tesseract OCR识别,亦或是采用神经网络训练识别验证码等。
二、概要
今天咱们先主要来讲一讲,如何应对第2条的反反网络爬虫,如何根据多IP抓取。根据多IP网络爬虫,又分为以下几种形式:
根据ADSL拨号换IP服务器。每拨一次就会有一个新IP,较好解决IP单一问题。
假如是局域网,带路由器的,第一种方法可能不好用。这个时候可以模拟登陆路由器,控制路由器重新拨号,换IP,这其实是一种折中的办法,曲线救国。
代理IP,利用购买的或是网上抓取的免费代理IP,实现多IP网络爬虫。
分布式网络爬虫。采用多个服务器,多个IP,多个slave网络爬虫同时运行,由master负责调度。效率较高,属于大型分布式抓取,一般用redis分布式抓取,不表。
最近了解到一种新的加密的代理网络。Tor匿名网络,利用这个也能匿名换IP。这个还没有详细了解,不表。
三、正文
1. ADSL拨号
我一般是在windows平台ADSL拨号,其他平台暂时没用过。windows平台拨号,我一般用python的代码为:
2. 路由器拨号
假如是局域网,带路由器的。直接调用windows的rasdial命令无法拨号时,这个时候可以模拟登陆路由器,控制路由器重新拨号,换IP,这其实是一种折中的办法,曲线救国。下面以登录小米路由器示例:
利用这个方法,就实现了用路由器换IP的目的。该方法的缺陷也是很明显的。就是不像第一种方法那样通用。基本上一个路由器就得编一套代码,属于定制代码。
3. 代理IP
代理IP是最常见的一种多IP网络爬虫方法。在请求Headers中加入代理IP地址,即可实现代理IP抓取。缺陷是爬取速度和代理IP的速度息息相关。而且好的IP费用较高,免费的速度普遍不高。
附上requests抓取携带代理IP和selenium抓取携带代理IP的代码。
requests:
selenium:
四、尾言
本文主要讲了反网络爬虫的一些概念,常用的方法,反反网络爬虫的一些方法,并且主要介绍了多IP网络爬虫的实现方式,属于网络爬虫领域基础内容。掌握了这些基础内容,以后网络爬虫步伐才能迈得坚实。
天下数据提供动态拨号vps、动态IP拨号、动态vps、动态IP拨号服务器、动态秒换IP、ADSL拨号服务器等,有大陆、美国、香港、日本、韩国、菲律宾、新加坡等!适用于网络营销、数据抓取、数据分析、刷单、投票等领域。需要的朋友请联系天下数据客服!