我正在使用一个网页抓取工具来索引不希望编入索引的网站.
我的第一个尝试:
我写了一个c#抓取工具,通过每一个页面并下载它们.
这导致我的IP在10分钟内被其服务器阻止.
我把它移动到亚马逊EC2,并写了一个分布式的Python脚本,运行大约50个实例.这一直高于启动我的门槛.这也是每月约1900美元
我回到了我的初始想法,并将其放在TOR网络的缩写版中.这是有效的,但是非常缓慢.
我没有想法我怎么能超过他们阻止我重复的要求.
我说“阻止”他们实际上给了我一个随机的404未找到错误的页面肯定存在.这是随机的,只有在一小时内通过约300个请求后才开始发生.
解决方法
好的,首先,如果一个网站不希望你爬行太频繁,那么你不应该!这是基本的礼貌,你应该始终坚持下去.
不过,我明白,有一些网站,比如Google,他们通过一天抓住你的网站赚钱,当你试图抓取Google时,他们就会阻止你.
解决方案1:代理服务器
在任何情况下,获得一堆EC2机器的替代方法是获取代理服务器.代理服务器比EC2便宜,情况和要点:
http://5socks.net/en_proxy_socks_tarifs.htm
当然,代理服务器不如EC2(带宽明智)那么快,但是您应该能够在平衡点上获得与50 EC2实例相似或更高的吞吐量,远低于现在支付的费用.这涉及到您寻找负担得起的代理,并找到将给您类似结果的代理.这里要注意的一点是,就像你一样,可能还有其他人使用代理服务来抓取您抓取的网站,他们可能不会如何抓取它们那么聪明,所以整个代理服务可能会被阻止对代理服务的一些其他客户端的活动(我亲自看过).
解决方案2:你大代理!
这有点疯狂,我还没有完成这方面的数学,但您可以自己开始代理服务,并向他人出售代理服务.您无法使用所有的EC2机器的带宽,所以您降低成本的最佳方式是做亚马逊做的事情:分租出硬件.