On Fri, Mar 18, 2005 at 06:39:38PM +0300, Evgeny Stepanov wrote:
> use strict;
> use LWP::UserAgent;
> 
>   my $ua = LWP::UserAgent->new;
>   $ua->agent('Mozilla/5.0');
>   $ua->proxy(['https', 'http', 'ftp'] => 'http://my.proxy.addr:3128');
>   my $req = HTTP::Request->new(GET => 'https://some.secured.host/');
>   my $res = $ua->request($req);
>   if ($res->is_success) {
>       print $res->as_string;
>   }
>   else {
>       print "Failed: ", $res->status_line, "\n";
>   }
> 
> but it gives me
> Failed: 501 Not Implemented
> This piece of code works just fine without proxy defined, but i need
> proxy. As far as i understood, https through proxy is not implemented
> yet. Maybe you guys know another way to get it working with https
> through proxy?

Evgeny,

What you are trying to do is to initiate a 'GET' while most proxies
would expect method 'CONNECT'. With a GET the proxy would have to open
an SSL connection. With an end-to-end technology like SSL this is
pretty senseless. How should a proxy check the server cert or how
should the proxy send a client cert?

Sometimes it helps to read the docs. In Crypt::SSLeay it says

       Crypt::SSLeay Proxy Support

       For native Crypt::SSLeay proxy support of https requests, you
       need to set an environment variable HTTPS_PROXY to your proxy
       server & port, as in:

         # PROXY SUPPORT
         $ENV{HTTPS_PROXY} = 'http://proxy_hostname_or_ip:port';
         $ENV{HTTPS_PROXY} = '127.0.0.1:8080';

       ride or break the Crypt::SSLeay support, so do not mix the two.
       Use of the HTTPS_PROXY environment variable in this way is
       similar to LWP::UserAgent->env_proxy() usage, but calling that
       method will likely over

And, voila, in the proxy logs you should see

==> /var/log/squid/access.log <==
1111195481.685    656 192.168..X.XX TCP_MISS/200 8934 CONNECT 
some.secured.host:443 - DIRECT/XXXXXXXXX -

\rho

Reply via email to