使用http身份验证的Ruby Mechanize问题

时间:2012-10-29 18:38:49

标签: ruby mechanize http-authentication mechanize-ruby

我在浏览使用http身份验证的网站时遇到问题,我有一些网站列表,我做了一些报废,但其中一些网站上有一些http身份验证。我不希望获得那些我希望能够确定他们是否被http auth保护然后继续前进的网站的内容。例如,在下面的代码片段中,agent.get永远不会返回,因此我无法处理它。我该如何处理这样的案件?

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

2 个答案:

答案 0 :(得分:2)

您可以假设,如果页面加载时间过长,则使用http身份验证。显然不是100%准确,但也许对你的情况足够好?

即使agent.get永远不会返回,您也可以使用Timeout模块在一定时间后继续前进:

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

答案 1 :(得分:1)

应该提出一个Mechanize::UnauthorizedError,但出于某种原因它是行为不端的。也许你应该在机械化github问题表上报告。