Straturile din spatele unei cereri HTTPS Mechanize prin proxy
Vedeți cum Mechanize, modulul de protocol HTTPS al LWP și backendul SSL cooperează pentru a ruta, tuna și verifica o cerere HTTPS.
Setați ruta pe obiectul Mechanize înainte de preluare:
use WWW::Mechanize;
my $mech = WWW::Mechanize->new(timeout => 30);
$mech->proxy(
['http', 'https'],
'http://proxy.example.net:8080',
);
Folosiți ascultătorul HTTP dorit din exemplu; pentru cererile permise către ținte publice, candidații sunt în lista de proxy HTTP. Matricea numește schemele de destinație. Punctul final http:// oferă o rută CONNECT obișnuită pentru HTTPS: HTTP către proxy, tunel către țintă, apoi TLS-ul țintei. Dacă implementarea folosește în schimb setări de mediu, $mech->env_proxy este alternativa; importarea lor ulterioară poate modifica o rută atribuită în cod.
Mechanize moștenește rețeaua LWP::UserAgent în loc să ofere un motor de proxy HTTPS separat:
- Mechanize oferă linkuri, formulare și comportamentul paginii curente.
- LWP::UserAgent și transportul său HTTP selectează ruta și organizează CONNECT.
- LWP::Protocol::https oferă gestionarea HTTPS și actualizează conexiunea.
- Net::HTTPS cu backendul său SSL oferă socketul compatibil TLS, de obicei IO::Socket::SSL în configurațiile moderne.
Un backend SSL instalat nu selectează singur un proxy. Păstrați numele de gazdă HTTPS original în URL: acceptarea CONNECT nu verifică certificatul acelui site.
Când întrețineți componente vechi, distingeți aceste granițe. libwww-perl 6.06 și LWP::Protocol::https 6.06 distribuit separat au introdus corecturi coordonate pentru CONNECT HTTP normal. Doar versiunea UserAgent nu identifică modulul HTTPS. LWP::Protocol::https 6.15 a adăugat o corectură pentru puncte finale de proxy cu TLS, al căror schema https:// adaugă TLS proxy-ului înainte de TLS-ul țintei.
Configurațiile mai vechi Net::SSL/Crypt::SSLeay pot folosi în schimb mecanismul de mediu HTTPS_PROXY documentat al acelui backend. Nu aplicați rețeta sa căii moderne IO::Socket::SSL, unde LWP deține rutarea.
Folosiți prima etapă eșuată pentru a alege componenta: un handler HTTPS lipsă privește modulul de protocol; un CONNECT respins privește ruta, acreditările sau politica; o eroare de certificat după tunel privește identitatea și încrederea destinației. Păstrați verificarea în timp ce schimbați componenta pe care se bazează acea dovadă.