http://qs321.pair.com?node_id=363353


in reply to Re^3: Proxy Authentication
in thread Proxy Authentication

xiper,

This looked very promising and tried the code below but get the 502 error. Is their a way of establishing exactly what the proxy is objecting to? I am sure that the domain\username and password are correct.

#!/usr/local/bin/perl use LWP::UserAgent; use HTTP::Request; use HTTP::Response; use HTTP::Headers; my $header = HTTP::Headers->new( Proxy_Authorization => 'Basic ZW1lYVx +yYmlzc2V0OnJvbjQ1Ng==' ); my $ua = new LWP::UserAgent; #$ua->proxy('http', 'http://domain\username:password@10.10.10.10:8080/ +'); $ua->proxy('http', 'http://10.10.10.10:8080/'); $ua->no_proxy('my_domain.com'); my $request = new HTTP::Request('GET', $ARGV[0], $header); #$request->proxy_authorization_basic( 'domain\username', 'password' ); my $response = $ua->request($request); if ($response->is_success) { print $response->content; } else { print $response->error_as_HTML; }
And this is the error that I am getting

$ perl -d ./get_url.pl http://www.google.co.uk Loading DB routines from perl5db.pl version 1.19 Editor support available. Enter h or `h h' for help, or `man perldebug' for more help. main::(./get_url.pl:8): my $header = HTTP::Headers->new( Proxy_Authori +zation => 'Basic ZW1lYVxyYmlzc2V0OnJvbjQ1Ng==' ); DB<1> s HTTP::Headers::new(/usr/local/lib/perl5/site_perl/5.8.0/HTTP/Headers.p +m:70): 70: my($class) = shift; DB<1> s HTTP::Headers::new(/usr/local/lib/perl5/site_perl/5.8.0/HTTP/Headers.p +m:71): 71: my $self = bless {}, $class; DB<1> s HTTP::Headers::new(/usr/local/lib/perl5/site_perl/5.8.0/HTTP/Headers.p +m:72): 72: $self->header(@_) if @_; # set up initial headers DB<1> x $header 0 undef DB<2> r scalar context return from HTTP::Headers::new: 'proxy-authorization' = +> 'Basic ZW1lYVxyYmlzc2V0OnJvbjQ1Ng==' main::(./get_url.pl:10): my $ua = new LWP::UserAgent; DB<2> r <HTML> <HEAD><TITLE>An Error Occurred</TITLE></HEAD> <BODY> <H1>An Error Occurred</H1> 502 Proxy Error ( The ISA Server denies the specified Uniform Resource + Locator (URL). ) </BODY> </HTML> Debugged program terminated. Use q to quit or R to restart,

Any advice appreciated.

rmb

Replies are listed 'Best First'.
Re^5: Proxy Authentication
by dada (Chaplain) on Jun 11, 2004 at 21:14 UTC
    rmb, I hope you already changed your password! if not, do it as soon as you can.

    you see, between a password in plain text in your user environment and a password base64-encoded on PerlMonks, I would prefer the first :-)

    cheers,
    Aldo King of Laziness, Wizard of Impatience, Lord of Hubris
Re^5: Proxy Authentication
by xiper (Friar) on Jun 12, 2004 at 10:29 UTC
    Well, the code looks correct, and as eclark mentioned below, it works okay for me. It sounds like either the proxy isn't accepting your username/domain/password, or it isn't accepting the url you're giving it - look up the error code in your proxy's documentation. Make sure you can access the same page with the same credentials using a browser with the same proxy settings on the same computer. Try different url types and/or combinations of domain/username (eg, "username", "domain\username", "username@domain", "domain.suffix.com.uk\username", "username@domain.suffix.com.uk", etc).

    A good way to debug these things (as samtregar recently mentioned), is to write a small proxy using HTTP::Proxy, point your script & browser to it, and see what the difference is in the request header they send. Here's a snippit to get you started:

    #! /usr/bin/perl use strict; use HTTP::Proxy qw( :log ); my $proxy = new HTTP::Proxy; $proxy->port( 8081 ); $proxy->logfh( *STDOUT ); $proxy->logmask( ALL ); $proxy->start;
    Good luck!

    - ><iper

    use japh; print;