Python http.client CONNECT: HTTP/1.1 od Python 3.12
Před použitím starých řešení HTTP/1.0 CONNECT zkontrolujte implementaci Pythonu a přenosové vrstvy.
Staré tvrzení, že Python vždy posílá HTTP/1.0 pro CONNECT, už není bezpečné obecné pravidlo. Python 3.12 změnil tunelování v http.client na HTTP/1.1 a přidal automatické generování hlavičky Host, pokud není dodána.
Tato změna patří k dokumentované implementaci standardní knihovny. Knihovna HTTP na vyšší úrovni může chování tunelu přepsat nebo obalit, proto zaznamenejte její verzi i verzi Pythonu.
Pokud proxy tunel odmítne, prozkoumejte výměnu CONNECT, kterou tento klient skutečně vytvořil. Změna verze HTTP v požadavku na cíl nebo přidání hlavičky Host k požadavku na web nutně nemění dřívější požadavek tunelu.
Podobně úprava soukromých polí ve starém příkladu adaptéru Requests může aplikaci uzamknout ke zastaralému internímu API. Preferujte kompatibilní podporovanou kombinaci klienta a běhového prostředí a dokumentovanou integraci proxy.
Vedené dvě konverzace v přehledu oddělte: požadavek HTTP použitý k otevření tunelu, poté protokol vyjednaný s cílem uvnitř něj. Mohou používat různé verze a selhat v různých fázích.