2012-10-29 120 views
2

我有問題解決使用http身份驗證的網站,我有一個網站的列表,我做了一些報廢,但其中一些有他們的HTTP身份驗證。我不希望獲得那些我希望能夠確定它們是否被http auth守護並繼續前進的網站的內容。例如,在代理下面的代碼片段中,永遠不會返回,因此我無法處理它。我該如何處理這種情況?紅寶石機械化與http身份驗證問題

require 'mechanize' 
agent = Mechanize.new 
page = agent.get('http://freyalovesmusic.co.uk') 

回答

2

您可以假設,如果頁面加載時間過長,則使用http身份驗證。顯然不是100%準確,但也許足夠你的情況?

可以使用超時模塊一定時間後繼續前進,即使agent.get永遠不會返回:

require 'mechanize' 
require 'timeout' 

agent = Mechanize.new 
begin 
    Timeout::timeout(5) do 
     page = agent.get('http://freyalovesmusic.co.uk') 
    end 
rescue Timeout::Error 
    puts 'Page likely using http authentication' 
end 
+0

哇真棒......這是什麼結束了,實際上是在這裏閱讀之前做的。驗證我的想法。 –

1

應該養Mechanize::UnauthorizedError但它的行爲不端的某些原因。也許你應該在機械化github問題表單上報告它。

+0

我會報告它。 –