Sto cercando di creare uno script che si colleghi semplicemente a un sito Web. Tuttavia, per qualche motivo non si collegherà a nulla che utilizza HTTPS.Non riesco a connettermi a qualsiasi sito HTTPS utilizzando LWP :: UserAgent
Abbiamo un proxy abilitato qui. Tuttavia, ritengo che il proxy non sia il problema, perché se dovessi connettermi a un HTTPS all'interno della rete che non esegue il tunneling attraverso un proxy, esso continua a fallire.
Se dovessi eseguire questo programma su qualsiasi sito che non utilizza HTTPS, posso passare e lo script funziona come previsto.
Quello che mi chiedo è cosa potrebbe essere possibile bloccando lo script dalla connessione a qualsiasi sito protetto SSL.
Ecco il codice che ho scritto:
$ENV{HTTPS_DEBUG} = 1;
my $ua = LWP::UserAgent->new(keep_alive => 1);
$ua->agent('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36');
my $pac = HTTP::ProxyPAC->new(URI->new("http://pacfilelocation:8080/pac_file.pac"));
my $res = $pac->find_proxy("https://www.google.com");
if ($res->direct) {
print "No Proxy Needed\n";
} elsif ($res->proxy) {
print "Proxy: " . $res->proxy . "\n";
$ENV{HTTPS_PROXY} = $res->proxy;
$ENV{HTTP_PROXY} = $res->proxy;
$ua->env_proxy;
}
my $req = new HTTP::Request('GET', 'https://www.google.com/');
$req->header('Accept' => 'text/html');
$req->header('Host', 'www.google.com');
my $res2 = $ua->request($req);
if ($res2->is_success) {
print $res2->decoded_content;
} else {
print "Error: " . $res2->status_line . "\n";
}
La caratteristica HTTPS_DEBUG per qualche motivo non l'uscita di debug, che rende questo ancora più difficile da risolvere.
Quando si esegue lo script ottengo un errore generico:
Error: 500 Can't connect to www.google.com:443
Qualsiasi aiuto sarebbe grande!
Aggiornamento di LWP :: Protocol :: https a 6.06 lavorato. Grazie mille! Nota: ho dovuto installare manualmente 6.06, come cpan usato 6.04 – theEli