机械化和NTLM身份验证

时间:2010-08-02 20:08:00

标签: ruby mechanize ntlm

以下代码生成401 => Net :: HTTPUnauthorized错误。

来自日志:


response-header: x-powered-by => ASP.NET
response-header: content-type => text/html  
response-header: www-authenticate => Negotiate, NTLM  
response-header: date => Mon, 02 Aug 2010 19:48:17 GMT  
response-header: server => Microsoft-IIS/6.0  
response-header: content-length => 1539  
status: 401

脚本如下:


require 'rubygems'  
require 'mechanize'  
require 'logger'  

agent = WWW::Mechanize.new { |a| a.log = Logger.new("mech.log") }  

agent.user_agent_alias = 'Windows IE 7'  

agent.basic_auth("username","password")   

page = agent.get("http://server/loginPage.asp")

我认为401的原因是我需要使用NTLM进行身份验证,但我一直无法找到如何做到这一点的好例子。

2 个答案:

答案 0 :(得分:2)

agent.add_auth('http://server', 'username', 'password', nil, 'domain.name')

http://mechanize.rubyforge.org/Mechanize.html

测试:

  • Windows Server 2012 R2 + IIS 8.5
  • Ruby 1.9.3

答案 1 :(得分:-1)

Mechanize 2支持NTLM身份验证:

m = Mechanize.new
m.agent.username = 'user'
m.agent.password = 'password'
m.agent.domain = 'addomain'