|
Posted by Richard Lawrence on March 30, 2005, 6:45 am
Please log in for more thread options
Hi all,
I'm trying to access https://www.nodeworks.com/ through a proxy which
requires a proxy username and password. The code I have is as follows:
#!/usr/bin/perl
use strict;
use LWP::UserAgent;
use Data::Dumper qw(Dumper);
# If they provide an argument, connect to https else http
my $url = "http://www.nodeworks.com"; $url = "https://www.nodeworks.com" if ($ARGV[0]);
print "Going to get $urln";
my $ua = new LWP::UserAgent;
# According to Crypt::SSLeay:
# "Use of the HTTPS_PROXY environment variable in this way is
show/hide quoted text
# similar to LWP::UserAgent->env_proxy() usage, but calling that
# method will likely override or break the Crypt::SSLeay support,
# so do not mix the two."
show/hide quoted text
# so only define $ua->proxy when using http.
if ($url =~ /^https/i)
{
print "Using HTTPS proxy $ENVn";
}
else
{
show/hide quoted text
$ua->env_proxy();
print "Using HTTP proxy $ENVn";
}
show/hide quoted text
$ua->timeout(15);
my $req = new HTTP::Request('HEAD', $url);
show/hide quoted text
my $res = $ua->request($req);
print "Result is:n";
print Dumper($res);
My environment variable for http_proxy is set up like so:
http_proxy=http://richard:mypassword@10.10.200.44:8080/
HTTP_PROXY=http://richard:mypassword@10.10.200.44:8080/
export ...all of the above...
and running the code above with no arguments produces the desired
result.
However, if I try the code above with an argument (so it trys https)
with the following environment variables:
https_proxy=http://richard:mypassword@10.10.200.44:8080/
HTTPS_PROXY=http://richard:mypassword@10.10.200.44:8080/
export ...all of the above...
or even:
https_proxy=http://10.10.200.44:8080/
HTTPS_PROXY=http://10.10.200.44:8080/
https_proxy_username=richard
HTTPS_PROXY_USERNAME=richard
https_proxy_password=mypassword
HTTPS_PROXY_PASSWORD=mypassword
export ...all of the above...
then I always get the following error:
$VAR1 = bless( {
show/hide quoted text
'_content' => '500 Can't connect to www.nodeworks.com:443 (Bad service
'8080/')',
show/hide quoted text
'_rc' => 500,
'_headers' => bless( {
'client-warning' => 'Internal response',
'client-date' => 'Wed, 30 Mar 2005 13:41:12 GMT',
'content-type' => 'text/plain'
}, 'HTTP::Headers' ),
show/hide quoted text
'_msg' => 'Can't connect to www.nodeworks.com:443 (Bad service
'8080/')',
show/hide quoted text
'_request' => bless( {
'_content' => '',
'_uri' => bless( do{(my $o = 'https://www.nodeworks.com')},
'URI::https' ),
show/hide quoted text
'_headers' => bless( {
'user-agent' => 'libwww-perl/5.803'
}, 'HTTP::Headers' ),
show/hide quoted text
'_method' => 'HEAD'
}, 'HTTP::Request' )
}, 'HTTP::Response' );
Can anyone offer any suggestions?
Many thanks,
Richard
|