2

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

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

2 回答 2

2

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

您可以使用 Timeout 模块在一定时间后继续前进,即使 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
于 2012-10-29T20:28:28.380 回答
1

它应该提高 aMechanize::UnauthorizedError但由于某种原因它行为不端。也许您应该在 mechanize github 问题表单上报告它。

于 2012-10-30T00:56:59.987 回答