Basic and form authentication using a mechanism (Ruby)

I am trying to enter a site on a company intranet that has a basic dialog box pop-up authentication and forms-based authentication. This is the code I'm using (which leads to 401 => Net :: HTTPUnauthorized error):

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 

As a result, error 401 => Net :: HTTPU is raised. The following is mech.log information:

 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 

At this moment I am trying to pass the first basic authentication. I noticed one thing: the IIS server and the Mechanize documentation there is a public function gen_auth_headers (), however in the code from gem I use this function does not exist, plus what it does in the code is outside of me.

TIA, NABS

+6
authentication ruby ruby-on-rails mechanize
source share
2 answers

auth will be removed in mechanized release 3, so you need to replace it with add_auth and provide the URI where these credentials apply.

 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 
+10
source share

Use Mechanize # auth

 require 'rubygems' require 'mechanize' require 'logger' agent = WWW::Mechanize.new { |a| a.log = Logger.new("mech.log") } agent.user_agent_alias = 'Windows Mozilla' agent.auth('username', 'password') agent.get('http://example.com') do |page| puts page.title end 
+6
source share

All Articles