2015-12-15 39 views
1

這是test.rb爲什麼我無法從AWS訪問此URL,但我可以從本地機器訪問?

require 'open-uri' 
require 'openssl' 

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE 
puts open('https://www.ic.gc.ca/app/scr/cc/CorporationsCanada/fdrlCrpDtls.html?corpId=1056565').read 

當我從本地機器運行此代碼時,我成功地打開並閱讀頁面,打印其內容。

但是,當我從我的AWS箱用命令ruby test.rb運行它,我得到一個503錯誤。這隻發生在過去一週。在此之前,我可以毫無問題地在網站上打開頁面。

我的本地機器運行Windows 7.我的AWS機器運行Linux。

這是怎麼回事?

+0

我不確定'Nokogiri :: HTML'是否與問題相關。如果你只是嘗試'open()'命令會發生什麼? –

+1

@JesseSielaff更新了我的問題。相同的結果:在Win7本地機器上成功,在AWS Linux機器上出現503錯誤。 – Username

+1

對於它的價值,我從我的Mac上運行'open('https://www.ic.gc.ca/app/scr/cc/CorporationsCanada/fdrlCrpDtls.html?corpId=1056565')',它工作。 –

回答

3

我猜想,www.ic.gc.ca有一些配置從AWS被禁止訪問。根據您的刮刀在最近工作的事實,甚至可能是他們發現他們正在被抓,並制定了一條規則來阻止您,並錯誤地擊中了所有的AWS。

+0

如果是這樣的話,是否有無論如何設置我的刮刀,所以它看起來不像AWS? – Username

+0

嗯,1)我的答案可能不正確,2)如果它是正確的,那是一個新的問題,你應該單獨發佈。不過,對於進一步的研究,我建議你將Ruby腳本中的open()的結果與在瀏覽器中訪問相同URL的結果進行比較。我想我實際上在瀏覽器中獲得了類似於503的響應。 **編輯**:我錯了,它在瀏覽器中打開得很好。我錯過了'corpId'。 –

+0

AWS IP或IP範圍可能被禁用。你可以嘗試獲得新的IP,然後嘗試抓取然後 – Vaviloff

相關問題