我正在做一个网络爬虫,索引那些不想被索引的网站。
我的第一次尝试:我编写了一个c#爬虫,遍历每个页面并下载它们。这导致我的IP在10分钟内就被他们的服务器屏蔽了。
我把它移到了亚马逊EC2上,并编写了一个分布式python脚本,运行了大约50个实例。这只是略高于他们启动我的门槛。这也是一个月1900美元的费用...
我回到了我最初的想法,并将其放在TOR网络的缩短版本之后。这是可行的,但速度非常慢。
我没主意了。我怎样才能通过他们因为我的重复请求而阻止我。
我说“块”,实际上他们给了我一个随机的404没有找到错误的页面,这是肯定存在的。这是随机的,只有当我在一个小时内处理了大约300个请求后才开始发生。
发布于 2011-12-12 23:23:06
好的,首先也是最重要的:如果一个网站不想让你太频繁地抓取它,那么你就不应该这样做!这是基本的礼貌,你应该始终遵守它。
然而,我确实理解有些网站,比如谷歌,他们通过整天抓取你的网站来赚钱,当你试图抓取谷歌时,他们就会屏蔽你。
解决方案1:代理服务器
在任何情况下,获得一堆EC2机器的替代方案都是获得代理服务器。代理服务器比EC2便宜得多,案例和要点:http://5socks.net/en_proxy_socks_tarifs.htm
当然,代理服务器的速度没有EC2快(带宽方面),但您应该能够在50个EC2实例获得类似或更高吞吐量的情况下取得平衡,而您现在支付的费用要低得多。这涉及到您搜索负担得起的代理,并找到能给您类似结果的代理。这里要注意的一件事是,就像你一样,可能还有其他人使用代理服务来抓取你正在抓取的网站,他们可能对抓取网站的方式不够聪明,所以整个代理服务可能会因为代理服务的某个其他客户端的活动而被阻止(我亲眼见过)。
解决方案2: You-Da-Proxy!
这有点疯狂,我没有做过背后的数学计算,但你可以自己启动代理服务,并将代理服务出售给其他人。无论如何,你不能使用你的EC2机器的所有带宽,所以对你来说削减成本的最好方法是像亚马逊一样:转租硬件。
发布于 2014-08-29 07:13:53
到目前为止,使用代理是解决此问题的最常见方法。还有其他更高级别的解决方案,提供一种“页面下载即服务”,保证您获得“干净”的页面(而不是404等)。其中一个叫做Crawlera (由我的公司提供),但也可能有其他的。
发布于 2018-02-07 06:23:59
对于这种情况,我通常使用https://gimmeproxy.com,它每秒检查一次代理。
要获得正常工作的代理,您只需发出以下请求:
https://gimmeproxy.com/api/getProxy
您将获得包含所有代理数据的JSON响应,稍后您可以根据需要使用这些数据:
{
"supportsHttps": true,
"protocol": "socks5",
"ip": "156.182.122.82:31915",
"port": "31915",
"get": true,
"post": true,
"cookies": true,
"referer": true,
"user-agent": true,
"anonymityLevel": 1,
"websites": {
"example": true,
"google": false,
"amazon": true
},
"country": "BR",
"tsChecked": 1517952910,
"curl": "socks5://156.182.122.82:31915",
"ipPort": "156.182.122.82:31915",
"type": "socks5",
"speed": 37.78,
"otherProtocols": {}
}
https://stackoverflow.com/questions/8476233
复制相似问题