I livelli dietro una richiesta HTTPS Mechanize tramite proxy
Scopri come Mechanize, il modulo di protocollo HTTPS di LWP e il backend SSL cooperano per instradare, incapsulare e verificare una richiesta HTTPS.
Imposta la rotta sull'oggetto Mechanize prima del recupero:
use WWW::Mechanize;
my $mech = WWW::Mechanize->new(timeout => 30);
$mech->proxy(
['http', 'https'],
'http://proxy.example.net:8080',
);
Usa il listener HTTP previsto nell'esempio; per le richieste consentite verso destinazioni pubbliche, i candidati sono nella lista di proxy HTTP. L'array indica gli schemi di destinazione. L'endpoint http:// fornisce una rotta CONNECT ordinaria per HTTPS: HTTP verso il proxy, tunnel verso la destinazione, poi il TLS della destinazione. Se la distribuzione usa invece impostazioni d'ambiente, $mech->env_proxy è l'alternativa; importarle in seguito può cambiare una rotta assegnata nel codice.
Mechanize eredita il networking di LWP::UserAgent invece di fornire un motore proxy HTTPS separato:
- Mechanize fornisce collegamenti, moduli e comportamento della pagina corrente.
- LWP::UserAgent e il suo trasporto HTTP scelgono la rotta e organizzano CONNECT.
- LWP::Protocol::https fornisce la gestione HTTPS e aggiorna la connessione.
- Net::HTTPS con il suo backend SSL fornisce il socket abilitato a TLS, di norma IO::Socket::SSL nelle configurazioni moderne.
Un backend SSL installato non seleziona da solo un proxy. Mantieni il nome host HTTPS originale nell'URL: l'accettazione di CONNECT non verifica il certificato di quel sito.
Quando si mantengono componenti vecchi, distingui questi confini. libwww-perl 6.06 e LWP::Protocol::https 6.06, distribuito separatamente, hanno introdotto correzioni coordinate per il normale CONNECT HTTP. La sola versione di UserAgent non identifica il modulo HTTPS. LWP::Protocol::https 6.15 ha aggiunto una correzione per gli endpoint proxy abilitati a TLS, il cui schema https:// aggiunge TLS al proxy prima del TLS di destinazione.
Le configurazioni più vecchie di Net::SSL/Crypt::SSLeay possono invece usare il meccanismo d'ambiente HTTPS_PROXY documentato di quel backend. Non applicare la sua ricetta al percorso moderno IO::Socket::SSL, dove LWP possiede l'instradamento.
Usa il primo stadio fallito per scegliere il componente: un gestore HTTPS mancante riguarda il modulo di protocollo; un CONNECT rifiutato riguarda rotta, credenziali o criteri; un errore di certificato dopo il tunnel riguarda l'identità e la fiducia della destinazione. Mantieni la verifica mentre cambi il componente sostenuto da quell'evidenza.