Lagene bag en proxyseret HTTPS-anmodning med Mechanize
Se hvordan Mechanize, LWPs HTTPS-protokolmodul og SSL-backenden samarbejder om at rute, tunnele og verificere en HTTPS-anmodning.
Angiv ruten på Mechanize-objektet før hentning:
use WWW::Mechanize;
my $mech = WWW::Mechanize->new(timeout => 30);
$mech->proxy(
['http', 'https'],
'http://proxy.example.net:8080',
);Brug den tilsigtede HTTP-lytter i eksemplet; for tilladte anmodninger til offentlige mål findes kandidaterne i HTTP-proxylisten. Arrayet navngiver destinationsskemaerne. Endepunktet http:// giver en almindelig CONNECT-rute til HTTPS: HTTP til proxyen, tunnel til målet, derefter målets TLS. Hvis udrulningen i stedet bruger miljøindstillinger, er $mech->env_proxy alternativet; import af dem bagefter kan ændre en rute, der er tildelt i koden.
Mechanize arver LWP::UserAgent-netværket i stedet for at levere en separat HTTPS-proxymotor:
- Mechanize leverer links, formularer og adfærd for den aktuelle side.
- LWP::UserAgent og dets HTTP-transport vælger ruten og arrangerer CONNECT.
- LWP::Protocol::https leverer HTTPS-håndtering og opgraderer forbindelsen.
- Net::HTTPS med sin SSL-backend leverer en TLS-kapabel socket, normalt IO::Socket::SSL i moderne konfigurationer.
En installeret SSL-backend vælger ikke selv en proxy. Behold det oprindelige HTTPS-værtsnavn i URL'en: accept af CONNECT verificerer ikke det pågældende websteds certifikat.
Når du vedligeholder gamle komponenter, skal du skelne mellem disse grænser. libwww-perl 6.06 og den separat distribuerede LWP::Protocol::https 6.06 introducerede koordinerede rettelser til normal HTTP CONNECT. UserAgent-versionen alene identificerer ikke HTTPS-modulet. LWP::Protocol::https 6.15 tilføjede en rettelse til TLS-aktiverede proxyendepunkter, hvis https://-skema tilføjer TLS til proxyen før målets TLS.
Ældre Net::SSL/Crypt::SSLeay-konfigurationer kan i stedet bruge den dokumenterede miljømekanisme HTTPS_PROXY for den backend. Anvend ikke dens opskrift på den moderne IO::Socket::SSL-vej, hvor LWP ejer rutningen.
Brug det første fejlende trin til at vælge komponenten: en manglende HTTPS-handler vedrører protokolmodulet; afvist CONNECT vedrører rute, legitimationsoplysninger eller politik; en certifikatfejl efter tunnelen vedrører destinationens identitet og tillid. Behold verifikationen, mens du skifter den komponent, som disse beviser understøtter.