我想登录到公司内部网站上有一个基本的身份验证弹出对话框和基于窗体的身份验证。这是我正在使用的代码(这导致了401 =>净:: HTTPUnauthorized错误):机械化基础和表单身份验证(红宝石)
require 'rubygems'
require 'mechanize'
require 'logger'
agent = WWW::Mechanize.new { |a| a.log = Logger.new("mech.log") }
agent.user_agent_alias = 'Windows Mozilla'
agent.basic_auth('username','password')
agent.get('http://example.com') do |page|
puts page.title
end
这导致401 =>净:: HTTPUnauthorized错误。下面是mech.log信息:
I, [2011-03-13T17:25:21.900631 #22128] INFO -- : Net::HTTP::Get: /index.asp?LogIn=yes&action=7
D, [2011-03-13T17:25:21.901631 #22128] DEBUG -- : request-header: accept-language => en-us,en;q=0.5
D, [2011-03-13T17:25:21.901631 #22128] DEBUG -- : request-header: accept => */*
D, [2011-03-13T17:25:21.901631 #22128] DEBUG -- : request-header: user-agent => Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6
D, [2011-03-13T17:25:21.902631 #22128] DEBUG -- : request-header: connection => keep-alive
D, [2011-03-13T17:25:21.902631 #22128] DEBUG -- : request-header: accept-encoding => gzip,identity
D, [2011-03-13T17:25:21.902631 #22128] DEBUG -- : request-header: host => example.com
D, [2011-03-13T17:25:21.902631 #22128] DEBUG -- : request-header: accept-charset => ISO-8859-1,utf-8;q=0.7,*;q=0.7
D, [2011-03-13T17:25:21.903631 #22128] DEBUG -- : request-header: keep-alive => 300
D, [2011-03-13T17:25:22.813722 #22128] DEBUG -- : Read 24 bytes
D, [2011-03-13T17:25:22.814722 #22128] DEBUG -- : response-header: content-type => text/html
D, [2011-03-13T17:25:22.815722 #22128] DEBUG -- : response-header: connection => close
D, [2011-03-13T17:25:22.815722 #22128] DEBUG -- : response-header: www-authenticate => Negotiate, NTLM, Basic realm="example.com"
D, [2011-03-13T17:25:22.816722 #22128] DEBUG -- : response-header: date => Sun, 13 Mar 2011 11:55:21 GMT
D, [2011-03-13T17:25:22.817722 #22128] DEBUG -- : response-header: server => Microsoft-IIS/5.0
D, [2011-03-13T17:25:22.817722 #22128] DEBUG -- : response-header: content-length => 24
I, [2011-03-13T17:25:22.819723 #22128] INFO -- : status: 401
在这一点上,我只是想通过第一个基本认证。我注意到一件事,那就是服务器是IIS,并且在Mechanize documentation中有一个名为gen_auth_headers()的公共函数,但是在我使用此函数的gem代码中不存在,以及他在做什么代码超越了我。
TIA, NABS
对不起,我忘了包括那一行。实际上,我使用了basic_auth,这是auth的别名 – Nabs 2011-03-14 20:33:24
我已经使用Mechanize 1.0.0测试了上面的代码,它可以工作。可能是你使用的任何版本的错误。 – 2011-03-15 14:05:51
我相信agent.auth现在已被弃用。而是使用agent.add_auth(领域,用户名,密码) – 2012-12-17 13:22:06