我需要运行一个Web爬虫,我想从EC2执行它,因为我希望HTTP请求来自不同的IP范围,所以我不会被阻止.所以我认为在EC2实例上分发它可能有所帮助,但我找不到任何有关出站IP范围的信息.我不想麻烦地弄清楚EC2和分布式数据的额外复杂性,只是发现所有实例都使用相同的地址块而且我被服务器阻止了.
注意:这不适用于DoS攻击或任何其他攻击.我正在尝试为合法的商业目的收集数据,我尊重robots.txt,而我每秒只发一个请求,但主机仍在关闭我.
评论者保罗迪克森建议阻止我的适度抓取行为表明主持人不希望我抓住他们,因此我不应该这样做(即使假设我可以解决阻塞).人们同意这个吗?
首先,答案 - 是的,每个EC2实例都有自己的IP地址.现在进行一些评论:
网站所有者很容易阻止来自EC2-land的所有请求,并且一些网站管理员已经开始这样做,因为在EC2中运行的许多表现不佳的机器人.因此,使用EC2可能不是您问题的长期解决方案.
一个请求/秒仍然很快.超级礼貌使用30秒的爬行延迟.在Bixo Labs,我们通常以15秒的爬行延迟运行 - 甚至10秒开始在某些站点引起问题.
您还需要担心每天的总请求数,因为有些网站会对此进行监控.一个好的经验法则是每天不超过5000个请求/ IP地址.
最后,在EC2中使用多个服务器来绕过速率限制意味着您处于网络爬行的灰色区域,主要是由于粘糊糊的角色收集电子邮件地址,剥夺内容以及生成splog.所以,如果你真的想要住在附近,请仔细考虑.