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.

Související články