Python http.client CONNECT : HTTP/1.1 depuis Python 3.12
Vérifiez l'implémentation de Python et du transport avant d'appliquer d'anciens contournements HTTP/1.0 CONNECT.
L'ancienne affirmation selon laquelle Python envoie toujours HTTP/1.0 pour CONNECT n'est plus une règle générale sûre. Python 3.12 a fait passer le tunnel d'http.client en HTTP/1.1 et ajouté la génération automatique de l'en-tête Host lorsqu'il n'est pas fourni.
Ce changement relève de l'implémentation documentée de la bibliothèque standard. Une bibliothèque HTTP de niveau supérieur peut remplacer ou envelopper le comportement du tunnel, notez donc sa version ainsi que celle de Python.
Si un proxy refuse le tunnel, examinez l'échange CONNECT réellement produit par ce client. Changer la version HTTP de la requête de destination ou ajouter un en-tête Host à la requête vers le site web ne modifie pas forcément la requête de tunnel précédente.
De même, modifier des champs privés dans un ancien exemple d'adaptateur Requests peut verrouiller l'application sur une API interne obsolète. Préférez une combinaison client et environnement d'exécution compatible et prise en charge, ainsi qu'une intégration proxy documentée.
Gardez les deux conversations séparées dans le rapport : la requête HTTP utilisée pour ouvrir le tunnel, puis le protocole négocié avec la destination à l'intérieur. Elles peuvent utiliser des versions différentes et échouer à des étapes différentes.