Web crawler 爬网网站时超过请求限制

Web crawler 爬网网站时超过请求限制,web-crawler,distributed-computing,Web Crawler,Distributed Computing,我正在开发一个网络爬虫,它为不想被索引的站点编制索引 我的第一次尝试: 我编写了一个c#crawler,它可以遍历每个页面并下载它们。 这导致我的IP在10分钟内被他们的服务器阻塞 我将其移动到AmazonEC2,并编写了一个分布式python脚本,该脚本运行大约50个实例。这只是停留在刚刚超过他们的门槛踢我。这也需要每月1900美元 我回到了我最初的想法,把它放在了TOR网络的一个简化版本后面。这起作用了,但速度很慢 我没有主意了。我怎样才能越过他们一再阻拦我的请求 我说的“块”,他们实际上给

我正在开发一个网络爬虫,它为不想被索引的站点编制索引

我的第一次尝试: 我编写了一个c#crawler,它可以遍历每个页面并下载它们。 这导致我的IP在10分钟内被他们的服务器阻塞

我将其移动到AmazonEC2,并编写了一个分布式python脚本,该脚本运行大约50个实例。这只是停留在刚刚超过他们的门槛踢我。这也需要每月1900美元

我回到了我最初的想法,把它放在了TOR网络的一个简化版本后面。这起作用了,但速度很慢

我没有主意了。我怎样才能越过他们一再阻拦我的请求


我说的“块”,他们实际上给了我一个随机404未发现错误的网页上,肯定存在。这是随机的,只有在我在一小时内通过大约300个请求后才会发生。

好的,首先也是最重要的一点:如果网站不想让你太频繁地爬网,那么你就不应该这样做!这是基本的礼貌,你应该始终坚持下去。

然而,我知道有一些网站,比如谷歌,他们通过整天抓取你的网站来赚钱,当你试图抓取谷歌时,他们就会阻止你

解决方案1:代理服务器 在任何情况下,获得一堆EC2机器的替代方案是获得代理服务器。代理服务器比EC2便宜得多,具体情况如下:

当然,代理服务器的速度不如EC2(带宽方面),但您应该能够取得平衡,在这一点上,您可以获得与50个EC2实例相似或更高的吞吐量,而所需的费用却大大低于您现在支付的费用。这涉及到您搜索价格合理的代理,并找到能够提供类似结果的代理。这里需要注意的一点是,与您一样,可能有其他人使用代理服务来抓取您正在抓取的网站,他们可能不太了解如何抓取该网站,因此整个代理服务可能会由于代理服务的其他客户端的活动而被阻止(我个人看到过)

解决方案2:你是Da代理!
这有点疯狂,我还没有做过背后的计算,但你可以自己启动一个代理服务,并将代理服务卖给其他人。无论如何,您无法使用EC2机器的所有带宽,因此,降低成本的最佳方法是像Amazon那样:转租硬件。

到目前为止,使用代理是解决此问题最常见的方法。还有其他更高级别的解决方案,它们提供了一种“页面下载即服务”,保证您获得“干净”的页面(而不是404等)。其中一个被称为(由我的公司提供),但可能还有其他的。

每当我必须通过我正在爬行的页面的请求限制时,我通常使用它,因为这是最快的方式。 你不必关心任何事情,基础设施,IP,被封锁等等

他们有一个简单的API,您可以随时频繁地调用它,并且他们总是会返回一个跳过限制的有效响应

https://api.proxycrawl.com?url=https://somesite.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": {}
}

我正在爬网的站点很可能没有被任何其他服务爬网。我在考虑代理,但我总是因为你提到的原因而犹豫不决。既然你提到了它,没有其他人会在这个网站上爬行。谢谢你刚刚解决了我的问题,我在EC2上找到了一些代理。因为他们和我的服务器在同一个区域,但是有100个不同的IP,我的生活变得更加便宜,在带宽上的牺牲非常有限。只是算了一下。我的账单现在大约是150美元!那么,用我的方式挥舞一些现金:),节省1700美元。呵呵,很高兴我能帮你。你每秒爬行多少网页?您是否遇到过proxycrawl本身使用的代理服务器被列入黑名单的情况?我对许多不同的站点进行了爬网。我不知道他们的代理,我也不在乎,他们不会为失败的请求向我收费,所以如果请求失败,我只会再次调用同一个页面。他们负责代理等等,而不是我