Python http.client CONNECT: HTTP/1.1 sedan Python 3.12
Kontrollera Python- och transportimplementeringen innan du använder gamla HTTP/1.0 CONNECT-lösningar.
Det gamla påståendet att Python alltid skickar HTTP/1.0 för CONNECT är inte längre en säker allmän regel. Python 3.12 ändrade tunneleringen i http.client till HTTP/1.1 och lade till automatisk generering av Host-huvudet när det inte anges.
Den ändringen hör till den dokumenterade implementeringen av standardbiblioteket. Ett HTTP-bibliotek på högre nivå kan åsidosätta eller omsluta tunnelbeteendet, så notera dess version och Pythons version.
Om en proxy avvisar tunneln, undersök CONNECT-utbytet som klienten faktiskt producerade. Att ändra HTTP-versionen på destinationsbegäran eller lägga till ett Host-huvud på webbplatsbegäran ändrar inte nödvändigtvis den tidigare tunnelbegäran.
På samma sätt kan redigering av privata fält i ett gammalt Requests-adapterexempel låsa applikationen till ett föråldrat internt API. Föredra en kompatibel och stödd kombination av klient och körmiljö samt en dokumenterad proxyintegration.
Håll de två samtalen åtskilda i rapporten: HTTP-begäran som användes för att öppna tunneln, och sedan protokollet som förhandlades med destinationen inuti den. De kan använda olika versioner och misslyckas i olika skeden.