Lagren bakom en proxad Mechanize HTTPS-förfrågan
Se hur Mechanize, LWP:s HTTPS-protokollmodul och SSL-backenden samarbetar för att dirigera, tunnla och verifiera en HTTPS-förfrågan.
Ange rutten på Mechanize-objektet innan du hämtar:
use WWW::Mechanize;
my $mech = WWW::Mechanize->new(timeout => 30);
$mech->proxy(
['http', 'https'],
'http://proxy.example.net:8080',
);
Använd den avsedda HTTP-lyssnaren i exemplet; för tillåtna förfrågningar mot offentliga mål finns kandidaterna i HTTP-proxylistan. Matrisen namnger målens scheman. Ändpunkten http:// ger en vanlig CONNECT-rutt för HTTPS: HTTP till proxyn, tunnel till målet, sedan målets TLS. Om distributionen i stället använder miljöinställningar är $mech->env_proxy alternativet; att importera dem efteråt kan ändra en rutt som tilldelats i koden.
Mechanize ärver LWP::UserAgent-nätverk i stället för att tillhandahålla en separat HTTPS-proxymotor:
- Mechanize tillhandahåller länkar, formulär och beteende för aktuell sida.
- LWP::UserAgent och dess HTTP-transport väljer rutten och ordnar CONNECT.
- LWP::Protocol::https tillhandahåller HTTPS-hantering och uppgraderar anslutningen.
- Net::HTTPS med sin SSL-backend tillhandahåller en TLS-kapabel socket, vanligtvis IO::Socket::SSL i moderna konfigurationer.
En installerad SSL-backend väljer inte själv en proxy. Behåll det ursprungliga HTTPS-värdnamnet i URL:en: godkännande av CONNECT verifierar inte certifikatet för den webbplatsen.
När du underhåller gamla komponenter, skilj på dessa gränser. libwww-perl 6.06 och den separat distribuerade LWP::Protocol::https 6.06 introducerade samordnade korrigeringar för vanlig HTTP CONNECT. Enbart UserAgent-versionen identifierar inte HTTPS-modulen. LWP::Protocol::https 6.15 lade till en korrigering för TLS-aktiverade proxyändpunkter, vars https://-schema lägger till TLS till proxyn före målets TLS.
Äldre Net::SSL/Crypt::SSLeay-konfigurationer kan i stället använda den dokumenterade HTTPS_PROXY-miljömekanismen för den backenden. Använd inte dess recept på den moderna IO::Socket::SSL-vägen, där LWP äger routningen.
Använd det första misslyckade steget för att välja komponenten: en saknad HTTPS-hanterare gäller protokollmodulen; en avvisad CONNECT gäller rutt, autentiseringsuppgifter eller policy; ett certifikatfel efter tunneln gäller målets identitet och förtroende. Behåll verifieringen medan du byter komponenten som det beviset stöder.