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.

Relaterade artiklar