Python http.client CONNECT: HTTP/1.1 починаючи з Python 3.12
Перевірте реалізацію Python і транспорту, перш ніж застосовувати старі обхідні рішення HTTP/1.0 CONNECT.
Старе твердження, що Python завжди надсилає HTTP/1.0 для CONNECT, більше не є безпечним загальним правилом. Python 3.12 змінив тунелювання в http.client на HTTP/1.1 і додав автоматичне створення заголовка Host, якщо його не задано.
Ця зміна належить до документованої реалізації стандартної бібліотеки. HTTP-бібліотека вищого рівня може перевизначати або обгортати поведінку тунелю, тому записуйте її версію, а також версію Python.
Якщо проксі відхиляє тунель, дослідіть обмін CONNECT, який цей клієнт справді створив. Зміна версії HTTP у запиті до призначення або додавання заголовка Host до запиту до сайту не обов'язково змінює попередній запит тунелю.
Так само редагування приватних полів у старому прикладі адаптера Requests може прив'язати застосунок до застарілого внутрішнього API. Надавайте перевагу сумісному й підтримуваному поєднанню клієнта та середовища виконання і документованій інтеграції з проксі.
Тримайте дві розмови в звіті окремо: HTTP-запит, використаний для відкриття тунелю, а потім протокол, узгоджений із призначенням усередині нього. Вони можуть використовувати різні версії та зазнавати збоїв на різних етапах.