As capas detrás dunha solicitude HTTPS de Mechanize a través de proxy
Vexa como Mechanize, o módulo de protocolo HTTPS de LWP e o backend SSL cooperan para encamiñar, tunelar e verificar unha solicitude HTTPS.
Define a ruta no obxecto Mechanize antes de obter:
use WWW::Mechanize;
my $mech = WWW::Mechanize->new(timeout => 30);
$mech->proxy(
['http', 'https'],
'http://proxy.example.net:8080',
);
Usa o oínte HTTP previsto no exemplo; para solicitudes permitidas a destinos públicos, os candidatos están na lista de proxies HTTP. A matriz nomea os esquemas de destino. O punto final http:// fornece unha ruta CONNECT común para HTTPS: HTTP ao proxy, túnel ao destino e despois TLS do destino. Se o despregamento usa no seu lugar configuracións de ambiente, $mech->env_proxy é a alternativa; importalas despois pode cambiar unha ruta asignada no código.
Mechanize herda a rede de LWP::UserAgent en vez de fornecer un motor de proxy HTTPS separado:
- Mechanize fornece ligazóns, formularios e comportamento da páxina actual.
- LWP::UserAgent e o seu transporte HTTP seleccionan a ruta e organizan CONNECT.
- LWP::Protocol::https fornece o manexo de HTTPS e actualiza a conexión.
- Net::HTTPS co seu backend SSL fornece o socket capaz de TLS, normalmente IO::Socket::SSL nas configuracións modernas.
Un backend SSL instalado non selecciona por si mesmo un proxy. Mantén o nome de host HTTPS orixinal na URL: a aceptación de CONNECT non verifica o certificado dese sitio.
Ao manter compoñentes antigos, distingue estes límites. libwww-perl 6.06 e o LWP::Protocol::https 6.06 distribuído por separado introduciron correccións coordinadas para o CONNECT HTTP normal. A versión de UserAgent por si soa non identifica o módulo HTTPS. LWP::Protocol::https 6.15 engadiu unha corrección para puntos finais de proxy con TLS, cuxo esquema https:// engade TLS ao proxy antes do TLS do destino.
As configuracións máis antigas de Net::SSL/Crypt::SSLeay poden usar no seu lugar o mecanismo de ambiente HTTPS_PROXY documentado dese backend. Non apliques a súa receita á ruta moderna IO::Socket::SSL, onde LWP posúe o enrutamento.
Usa a primeira etapa fallida para seleccionar o compoñente: un xestor HTTPS ausente afecta o módulo de protocolo; un CONNECT rexeitado afecta a ruta, as credenciais ou a política; un erro de certificado posterior ao túnel afecta a identidade e a confianza do destino. Mantén a verificación mentres cambias o compoñente que apoia esa evidencia.