Ange rutten på Mechanize-objektet innan du hämtar:

use WWW::Mechanize;

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

Använd den avsedda HTTP-lyssnaren i exemplet; för tillåtna förfrågningar mot offentliga mål finns kandidaterna i HTTP-proxylistan. Matrisen namnger målens scheman. Ändpunkten http:// ger en vanlig CONNECT-rutt för HTTPS: HTTP till proxyn, tunnel till målet, sedan målets TLS. Om distributionen i stället använder miljöinställningar är $mech->env_proxy alternativet; att importera dem efteråt kan ändra en rutt som tilldelats i koden.

Mechanize ärver LWP::UserAgent-nätverk i stället för att tillhandahålla en separat HTTPS-proxymotor:

  • Mechanize tillhandahåller länkar, formulär och beteende för aktuell sida.
  • LWP::UserAgent och dess HTTP-transport väljer rutten och ordnar CONNECT.
  • LWP::Protocol::https tillhandahåller HTTPS-hantering och uppgraderar anslutningen.
  • Net::HTTPS med sin SSL-backend tillhandahåller en TLS-kapabel socket, vanligtvis IO::Socket::SSL i moderna konfigurationer.

En installerad SSL-backend väljer inte själv en proxy. Behåll det ursprungliga HTTPS-värdnamnet i URL:en: godkännande av CONNECT verifierar inte certifikatet för den webbplatsen.

När du underhåller gamla komponenter, skilj på dessa gränser. libwww-perl 6.06 och den separat distribuerade LWP::Protocol::https 6.06 introducerade samordnade korrigeringar för vanlig HTTP CONNECT. Enbart UserAgent-versionen identifierar inte HTTPS-modulen. LWP::Protocol::https 6.15 lade till en korrigering för TLS-aktiverade proxyändpunkter, vars https://-schema lägger till TLS till proxyn före målets TLS.

Äldre Net::SSL/Crypt::SSLeay-konfigurationer kan i stället använda den dokumenterade HTTPS_PROXY-miljömekanismen för den backenden. Använd inte dess recept på den moderna IO::Socket::SSL-vägen, där LWP äger routningen.

Använd det första misslyckade steget för att välja komponenten: en saknad HTTPS-hanterare gäller protokollmodulen; en avvisad CONNECT gäller rutt, autentiseringsuppgifter eller policy; ett certifikatfel efter tunneln gäller målets identitet och förtroende. Behåll verifieringen medan du byter komponenten som det beviset stöder.

Relaterade artiklar