Posted on:
Last modified:
爬虫如果只用固定的同一个或者同一组 IP 的话,很容易被封禁,轻者弹验证码,重者直接无法访问。
这里主要探讨如何构架一个代理 IP 池,从而能够频繁更换代理 IP。
按照代理 IP 的来源,主要有几个方法:
反爬虫的核心在于区分开正常用户访问和恶意爬虫用户。来源 IP 是访问很重要的一个特征,我们可以从来源 IP 的角度来做出不少反爬虫策略。
一般来说,大规模的爬虫我们都会放到服务器上去跑,搭建代理集群也会在服务器上,而正常用户的 IP 地址则来自家用 IP 范围内。这就给反爬虫的一方提供了便利,对于来自数据中心的请求可以直接限制访问甚至直接屏蔽掉,而对于家用的 IP 地址则宽容一些。
下面我们来看几个实例
一般正常用户的页面访问量很小,如果发现某个 IP 的访问量特别大,那么肯定是爬虫,直接封禁即可,或者每次都需要输入验证码访问。
IP 被封禁后一般不会被解封,或者需要很长时间,这时候只有两种思路,要么降低频率,更改自己的行为特征,避免被封,要么更换 IP。一般来说,不管怎样更改自己的行为,访问量还是很难降下来的,这时候只能换一个 IP 继续爬。
一些黑客会使用端口扫描器扫描互联网上的开放代理,然后免费或者付费提供给其他用户使用,比如下面这些网站:
但是这些网站的代理中能直接使用的可能不到 10%,而且失效时间很短。所以要使用这些代理 IP,需要首先爬取这些网站,然后随取随用。
网上有一些小的厂商代理了各地运营商的服务,搭建了一些小的服务器,一般内存只有 512M,而硬盘只有 8G,但是好处是通过 ADSL 上网,因此可以随时更换 IP。比如笔者搭建的这个动态代理:
每三十分钟更换一次 IP,而这些服务器也很便宜,在 100-200 每月,所以大可以搭建一个集群,这样基本上一个 IP 被封之前也基本被换掉了。
要封禁这种用户也很简单,可以看出虽然 IP 在更换,但是基本上还是在一个 B 段之内,一个 B 段也就 6w 个用户,直接封了就行了
首先找到一个靠谱的 ADSL 网站就实属不易,这些 adsl 提供商的技术水平普遍不高,往往只能提供 centos 镜像,有 centos 7.1 就算不错的了,其中有一家竟然提供了 ubuntu 14.04,结果还是各种问题,坑了我大概半天的时间。
有些爬虫会利用阿里云或者 AWS 的弹性 IP 来爬数据,反爬虫的第一步可以把阿里云的 IP 都屏蔽掉,正常用户一般是不会用这些 IP 来访问的。
阿里云的出口 IP 列表:
© 2016-2022 Yifei Kong. Powered by ynotes
All contents are under the CC-BY-NC-SA license, if not otherwise specified.
Opinions expressed here are solely my own and do not express the views or opinions of my employer.
友情链接: MySQL 教程站