Staré tvrdenie, že Python vždy odosiela HTTP/1.0 pre CONNECT, už nie je bezpečné všeobecné pravidlo. Python 3.12 zmenil tunelovanie v http.client na HTTP/1.1 a pridal automatické generovanie hlavičky Host, ak nie je zadaná.

Táto zmena patrí k dokumentovanej implementácii štandardnej knižnice. Knižnica HTTP na vyššej úrovni môže správanie tunela prepísať alebo obaliť, preto si poznamenajte jej verziu aj verziu Pythonu.

Ak proxy tunel odmietne, preskúmajte výmenu CONNECT, ktorú tento klient skutočne vytvoril. Zmena verzie HTTP v požiadavke na cieľ alebo pridanie hlavičky Host k požiadavke na web nemusí nevyhnutne zmeniť predchádzajúcu požiadavku tunela.

Podobne úprava súkromných polí v starom príklade adaptéra Requests môže aplikáciu uzamknúť na zastarané interné API. Preferujte kompatibilnú podporovanú kombináciu klienta a runtime a dokumentovanú integráciu proxy.

V správe držte dve konverzácie oddelene: požiadavka HTTP použitá na otvorenie tunela, potom protokol dohodnutý s cieľom v jeho vnútri. Môžu používať rôzne verzie a zlyhať v rôznych fázach.

Súvisiace články