Старото твърдение, че Python винаги изпраща HTTP/1.0 за CONNECT, вече не е безопасно общо правило. Python 3.12 промени тунелирането в http.client на HTTP/1.1 и добави автоматично генериране на заглавка Host, когато не е подадена.

Тази промяна принадлежи на документираната реализация на стандартната библиотека. По-високо ниво HTTP библиотека може да отмени или обвие поведението на тунела, затова запишете нейната версия заедно с версията на Python.

Ако проксито отхвърли тунела, прегледайте размяната CONNECT, която този клиент действително е създал. Промяната на HTTP версията на заявката към дестинацията или добавянето на заглавка Host към заявката към сайта не променя непременно по-ранната заявка за тунела.

По същия начин редактирането на частни полета в стар пример за адаптер на Requests може да заключи приложението към остарял вътрешен API. Предпочитайте съвместима поддържана комбинация от клиент и среда за изпълнение и документирана интеграция с прокси.

Дръжте двата разговора отделно в отчета: HTTP заявката, използвана за отваряне на тунела, след това протоколът, договорен с дестинацията вътре в него. Те могат да използват различни версии и да се провалят на различни етапи.

Подобни статии