我在浏览使用http身份验证的网站时遇到问题,我有一些网站列表,我做了一些报废,但其中一些网站上有一些http身份验证。我不希望获得那些我希望能够确定他们是否被http auth保护然后继续前进的网站的内容。例如,在下面的代码片段中,agent.get永远不会返回,因此我无法处理它。我该如何处理这样的案件?
require 'mechanize'
agent = Mechanize.new
page = agent.get('http://freyalovesmusic.co.uk')
答案 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问题表上报告。