Python http.client CONNECT: HTTP/1.1 od Pythona 3.12
Sprawdź implementację Pythona i warstwy transportowej, zanim zastosujesz stare obejścia HTTP/1.0 CONNECT.
Stare twierdzenie, że Python zawsze wysyła HTTP/1.0 dla CONNECT, nie jest już bezpieczną ogólną zasadą. Python 3.12 zmienił tunelowanie w http.client na HTTP/1.1 i dodał automatyczne generowanie nagłówka Host, gdy nie jest podany.
Ta zmiana należy do udokumentowanej implementacji biblioteki standardowej. Biblioteka HTTP wyższego poziomu może zastąpić lub opakować zachowanie tunelu, więc zapisz jej wersję oraz wersję Pythona.
Jeśli proxy odrzuci tunel, zbadaj wymianę CONNECT, którą ten klient faktycznie utworzył. Zmiana wersji HTTP żądania docelowego lub dodanie nagłówka Host do żądania witryny niekoniecznie zmienia wcześniejsze żądanie tunelu.
Podobnie edycja prywatnych pól w starym przykładzie adaptera Requests może przykuć aplikację do przestarzałego wewnętrznego API. Preferuj zgodną i obsługiwaną kombinację klienta i środowiska uruchomieniowego oraz udokumentowaną integrację proxy.
Trzymaj obie rozmowy osobno w raporcie: żądanie HTTP użyte do otwarcia tunelu, a następnie protokół wynegocjowany z celem wewnątrz niego. Mogą używać różnych wersji i zawodzić na różnych etapach.