Définissez la route sur l'objet Mechanize avant la récupération :

use WWW::Mechanize;

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

Utilisez l'écouteur HTTP prévu dans l'exemple ; pour les requêtes autorisées vers des cibles publiques, les candidats se trouvent dans la liste de proxys HTTP. Le tableau nomme les schémas de destination. Le point de terminaison http:// fournit une route CONNECT ordinaire pour HTTPS : HTTP vers le proxy, tunnel vers la cible, puis TLS cible. Si le déploiement utilise plutôt des paramètres d'environnement, $mech->env_proxy est l'alternative ; les importer ensuite peut modifier une route définie dans le code.

Mechanize hérite de la mise en réseau de LWP::UserAgent au lieu de fournir un moteur de proxy HTTPS distinct :

  • Mechanize fournit les liens, les formulaires et le comportement de la page courante.
  • LWP::UserAgent et son transport HTTP choisissent la route et organisent CONNECT.
  • LWP::Protocol::https assure la gestion HTTPS et met à niveau la connexion.
  • Net::HTTPS avec son backend SSL fournit la socket compatible TLS, généralement IO::Socket::SSL dans les configurations modernes.

Un backend SSL installé ne sélectionne pas lui-même un proxy. Conservez le nom d'hôte HTTPS d'origine dans l'URL : l'acceptation de CONNECT ne vérifie pas le certificat de ce site.

Lors de la maintenance d'anciens composants, distinguez ces frontières. libwww-perl 6.06 et LWP::Protocol::https 6.06, distribué séparément, ont introduit des correctifs coordonnés pour le CONNECT HTTP normal. La seule version de UserAgent n'identifie pas le module HTTPS. LWP::Protocol::https 6.15 a ajouté un correctif pour les points de terminaison de proxy compatibles TLS, dont le schéma https:// ajoute TLS au proxy avant le TLS cible.

Les configurations plus anciennes de Net::SSL/Crypt::SSLeay peuvent plutôt utiliser le mécanisme d'environnement HTTPS_PROXY documenté de ce backend. N'appliquez pas sa recette au chemin moderne IO::Socket::SSL, où LWP gère le routage.

Utilisez la première étape en échec pour choisir le composant : un gestionnaire HTTPS manquant concerne le module de protocole ; un CONNECT rejeté concerne la route, les identifiants ou la politique ; une erreur de certificat après le tunnel concerne l'identité et la confiance de la destination. Conservez la vérification lorsque vous changez le composant étayé par ces preuves.

Articles similaires