2010-06-03 109 views
2

我需要運行一個網絡爬蟲,並且我想從EC2開始,因爲我想讓HTTP請求來自不同的IP範圍,所以我不會被阻止。所以我認爲在EC2實例上發佈它可能會有所幫助,但是我找不到有關出站IP範圍的信息。我不想花時間去計算EC2和分佈式數據的額外複雜性,只發現所有的實例都使用相同的地址塊,而且無論如何我都會被服務器阻塞。EC2實例是否可以設置爲來自不同的IP範圍?

注意:這不適用於DoS攻擊或任何其他攻擊。我試圖爲了合法的商業目的收集數據,我尊重robots.txt,並且每秒只發出一個請求,但主持人仍然關閉我。

評論者Paul Dixon建議,阻止即使我的謙虛爬行的行爲表明主機不希望我抓取它們,因此我不應該這樣做(即使假設我可以解決阻塞問題)。人們是否同意這一點?

+1

如果主人正在檢測你的刮蹭和關閉你,也許你應該尊重他們的願望,而不是基於它的業務? – 2010-06-03 12:57:10

+0

FWIW,我曾經在pastebin.com上做過這種封鎖,看到EC2擁有的IP永遠是紅旗。你可以使用Tor,但是可以通過獲取一個動態的退出節點列表並阻止這些ips來阻止它。 – 2010-06-03 12:58:58

+3

如果這是一個合法的業務問題,爲什麼不聯繫該主機的管理員?外部IP始終來自易於識別爲EC2的範圍,無論您如何分配實例。 – sfussenegger 2010-06-03 13:00:51

回答

5

首先,答案是肯定的,每個EC2實例都有自己的IP地址。現在,在一些評論:

  • 很容易讓網站所有者阻止EC2土地所有請求,而一些站長已經開始這樣做,由於在EC2上運行很多性能欠佳的機器人。所以使用EC2可能不是您的問題的長期解決方案。

  • 一個請求/秒仍然很快。超級禮貌使用30秒的爬行延遲。在Bixo實驗室,我們通常以15秒的爬行延遲運行 - 即使10秒開始在某些站點引發問題。

  • 您還需要擔心總請求/天,因爲有些網站會監視它。一個好的經驗法則是不超過5000個請求/天/ IP地址。

  • 最後,在EC2中使用多個服務器來避開限速意味着您處於網絡爬行的灰色區域,大部分人都是由粘糊糊的人物收集電子郵件地址,剝去內容並生成splog。所以仔細考慮一下你是否真的想住在那個社區裏。

+0

在技​​術問題上,就我所知,這些地址是否在同一子網中,因此它們顯然是相互關聯的?你可以安排他們有多不同? 關於道德問題,不,我不想與垃圾郵件發送者在一起,但另一方面,我收集了我的公司提供的服務的這些信息,爲付費客戶增加了價值。如果我們有一個龐大的基礎設施,我們可以自己分發抓取,但是很小,我正在考慮如何實現抓取。應該有一種方法可以讓小型企業進行合法爬取。 – 2010-06-03 17:40:13

+0

@Joshua EC2使用不同的子網,但它們都是可識別的。只需在任何IP地址上進行whois查詢。由於大多數主機/防火牆不會使用whois數據來保護自己,您可能只會嘗試查找未被阻止的子網。我敢打賭,只要有人注意到一個爬蟲來自它,這個網絡就會被阻止。 – sfussenegger 2010-06-04 08:32:56

+0

我想我可以試試這個,但我認爲阻止整個子網是極端的,並且不會讓主機區分做出合理請求的恭敬的爬蟲和壞人。 – 2010-06-04 18:26:11