2012-10-29 84 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

我会报告它。 –