De lagen achter een via proxy lopend Mechanize HTTPS-verzoek
Zie hoe Mechanize, de HTTPS-protocolmodule van LWP en de SSL-backend samenwerken om één HTTPS-verzoek te routeren, tunnelen en verifiëren.
Stel de route in op het Mechanize-object voordat u ophaalt:
use WWW::Mechanize;
my $mech = WWW::Mechanize->new(timeout => 30);
$mech->proxy(
['http', 'https'],
'http://proxy.example.net:8080',
);
Gebruik de bedoelde HTTP-listener in het voorbeeld; voor toegestane verzoeken naar openbare doelen staan kandidaten in de HTTP-proxylijst. De array noemt de bestemmingsschema's. Het http://-eindpunt biedt een gewone CONNECT-route voor HTTPS: HTTP naar de proxy, tunnel naar het doel, dan doel-TLS. Als de implementatie in plaats daarvan omgevingsinstellingen gebruikt, is $mech->env_proxy het alternatief; ze later importeren kan een route wijzigen die in code is toegewezen.
Mechanize erft LWP::UserAgent-netwerken in plaats van een aparte HTTPS-proxy-engine te bieden:
- Mechanize levert links, formulieren en gedrag van de huidige pagina.
- LWP::UserAgent en zijn HTTP-transport kiezen de route en regelen CONNECT.
- LWP::Protocol::https levert HTTPS-afhandeling en upgradet de verbinding.
- Net::HTTPS met zijn SSL-backend levert de TLS-geschikte socket, normaal gesproken IO::Socket::SSL in moderne configuraties.
Een geïnstalleerde SSL-backend selecteert niet zelf een proxy. Behoud de oorspronkelijke HTTPS-hostnaam in de URL: het accepteren van CONNECT verifieert het certificaat van die site niet.
Bij het onderhouden van oude componenten, onderscheid deze grenzen. libwww-perl 6.06 en de apart gedistribueerde LWP::Protocol::https 6.06 introduceerden gecoördineerde fixes voor gewone HTTP CONNECT. Alleen de UserAgent-versie identificeert de HTTPS-module niet. LWP::Protocol::https 6.15 voegde een fix toe voor TLS-ingeschakelde proxy-eindpunten, waarvan het https://-schema TLS aan de proxy toevoegt vóór doel-TLS.
Oudere Net::SSL/Crypt::SSLeay-configuraties kunnen in plaats daarvan het gedocumenteerde HTTPS_PROXY-omgevingsmechanisme van die backend gebruiken. Pas het recept niet toe op het moderne IO::Socket::SSL-pad, waar LWP het routeren bezit.
Gebruik de eerste mislukte fase om de component te kiezen: een ontbrekende HTTPS-handler betreft de protocolmodule; een geweigerde CONNECT betreft route, inloggegevens of beleid; een certificaatfout na de tunnel betreft de identiteit en het vertrouwen van de bestemming. Behoud verificatie terwijl u de component wijzigt die dat bewijs ondersteunt.