Lagene bak en proxyet Mechanize-HTTPS-forespørsel
Se hvordan Mechanize, HTTPS-protokollmodulen til LWP og SSL-backenden samarbeider for å rute, tunnelere og verifisere én HTTPS-forespørsel.
Angi ruten på Mechanize-objektet før du henter:
use WWW::Mechanize;
my $mech = WWW::Mechanize->new(timeout => 30);
$mech->proxy(
['http', 'https'],
'http://proxy.example.net:8080',
);
Bruk den tiltenkte HTTP-lytteren i eksempelet; for tillatte forespørsler mot offentlige mål er kandidatene i HTTP-proxylisten. Matrisen navngir målskjemaene. http://-endepunktet gir en vanlig CONNECT-rute for HTTPS: HTTP til proxyen, tunnel til målet, deretter målets TLS. Hvis distribusjonen i stedet bruker miljøinnstillinger, er $mech->env_proxy alternativet; å importere dem etterpå kan endre en rute som er tildelt i koden.
Mechanize arver LWP::UserAgent-nettverking i stedet for å tilby en egen HTTPS-proxymotor:
- Mechanize leverer lenker, skjemaer og oppførsel for gjeldende side.
- LWP::UserAgent og HTTP-transporten velger ruten og ordner CONNECT.
- LWP::Protocol::https leverer HTTPS-håndtering og oppgraderer forbindelsen.
- Net::HTTPS med SSL-backenden leverer en TLS-kompatibel socket, vanligvis IO::Socket::SSL i moderne konfigurasjoner.
En installert SSL-backend velger ikke selv en proxy. Behold det opprinnelige HTTPS-vertsnavnet i URL-en: godkjenning av CONNECT verifiserer ikke sertifikatet til nettstedet.
Når du vedlikeholder gamle komponenter, skill disse grensene. libwww-perl 6.06 og den separat distribuerte LWP::Protocol::https 6.06 innførte koordinerte rettelser for vanlig HTTP CONNECT. Bare UserAgent-versjonen identifiserer ikke HTTPS-modulen. LWP::Protocol::https 6.15 la til en rettelse for TLS-aktiverte proxy-endepunkter, hvis https://-skjema legger TLS til proxyen før målets TLS.
Eldre Net::SSL/Crypt::SSLeay-konfigurasjoner kan i stedet bruke den dokumenterte HTTPS_PROXY-miljømekanismen til den backenden. Ikke bruk oppskriften på den moderne IO::Socket::SSL-banen, der LWP eier rutingen.
Bruk det første mislykkede trinnet til å velge komponenten: en manglende HTTPS-handler gjelder protokollmodulen; en avvist CONNECT gjelder rute, påloggingsinformasjon eller policy; en sertifikatfeil etter tunnelen gjelder målets identitet og tillit. Behold verifiseringen mens du bytter komponenten som den dokumentasjonen støtter.