Defina a rota no objeto Mechanize antes de buscar:

use WWW::Mechanize;

my $mech = WWW::Mechanize->new(timeout => 30);
$mech->proxy(
    ['http', 'https'],
    'http://proxy.example.net:8080',
);

Use o ouvinte HTTP pretendido no exemplo; para solicitações permitidas a destinos públicos, os candidatos estão na lista de proxies HTTP. A matriz nomeia os esquemas de destino. O endpoint http:// fornece uma rota CONNECT comum para HTTPS: HTTP para o proxy, túnel até o destino e depois TLS do destino. Se a implantação usar configurações de ambiente em vez disso, $mech->env_proxy é a alternativa; importá-las depois pode alterar uma rota atribuída no código.

Mechanize herda a rede do LWP::UserAgent em vez de fornecer um mecanismo de proxy HTTPS separado:

  • Mechanize fornece links, formulários e comportamento da página atual.
  • LWP::UserAgent e seu transporte HTTP selecionam a rota e organizam o CONNECT.
  • LWP::Protocol::https fornece o tratamento de HTTPS e atualiza a conexão.
  • Net::HTTPS com seu backend SSL fornece o soquete compatível com TLS, normalmente IO::Socket::SSL em configurações modernas.

Um backend SSL instalado não seleciona um proxy por si só. Mantenha o nome do host HTTPS original na URL: a aceitação do CONNECT não verifica o certificado desse site.

Ao manter componentes antigos, distinga estas fronteiras. libwww-perl 6.06 e o LWP::Protocol::https 6.06 distribuído separadamente introduziram correções coordenadas para o CONNECT HTTP normal. A versão do UserAgent sozinha não identifica o módulo HTTPS. LWP::Protocol::https 6.15 adicionou uma correção para endpoints de proxy com TLS, cujo esquema https:// adiciona TLS ao proxy antes do TLS de destino.

Configurações mais antigas de Net::SSL/Crypt::SSLeay podem usar, em vez disso, o mecanismo de ambiente HTTPS_PROXY documentado desse backend. Não aplique sua receita ao caminho moderno IO::Socket::SSL, onde o LWP é responsável pelo roteamento.

Use o primeiro estágio com falha para escolher o componente: um manipulador HTTPS ausente diz respeito ao módulo de protocolo; um CONNECT rejeitado diz respeito à rota, credenciais ou política; um erro de certificado após o túnel diz respeito à identidade e à confiança do destino. Mantenha a verificação enquanto altera o componente apoiado por essa evidência.

Artigos relacionados