ruby-on-rails – 使用Mechanize进行基本和表单身份验证(Ruby)
发布时间:2020-12-16 21:14:30 所属栏目:百科 来源:网络整理
导读:我正在尝试登录公司内部网上的一个站点,该站点具有基本的身份验证弹出对话框和基于表单的身份验证.这是我正在使用的代码(导致401 = Net :: HTTPUnauthorized错误): require 'rubygems'require 'mechanize'require 'logger'agent = WWW::Mechanize.new { |a|
我正在尝试登录公司内部网上的一个站点,该站点具有基本的身份验证弹出对话框和基于表单的身份验证.这是我正在使用的代码(导致401 => Net :: 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 => Net :: 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, 解决方法
auth方法将在机械化版本3中删除,因此必须由
add_auth替换,并提供应用这些凭据的URI.
require 'rubygems' require 'mechanize' agent = Mechanize.new agent.user_agent_alias = 'Windows Mozilla' agent.add_auth('http://example.com','username','password') agent.get('http://example.com') do |page| puts page.title end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容