【问题标题】:Ruby Mechanize issues with http authenticationRuby Mechanize 与 http 身份验证有关的问题
【发布时间】:2012-10-19 02:59:26
【问题描述】:

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

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

【问题讨论】:

    标签: ruby mechanize http-authentication mechanize-ruby


    【解决方案1】:

    您可以假设如果页面加载时间过长,则说明它使用的是 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
    

    【讨论】:

    • 哇太棒了......这就是最终要做的事情,实际上是在阅读之前完成的。验证我的想法。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      相关资源
      最近更新 更多