Den gamle påstanden om at Python alltid sender HTTP/1.0 for CONNECT er ikke lenger en trygg generell regel. Python 3.12 endret tunnelleringen i http.client til HTTP/1.1 og la til automatisk generering av Host-headeren når den ikke oppgis.

Denne endringen tilhører den dokumenterte implementasjonen av standardbiblioteket. Et HTTP-bibliotek på høyere nivå kan overstyre eller pakke inn tunnelatferden, så noter versjonen for både det og Python.

Hvis en proxy avviser tunnelen, undersøk CONNECT-utvekslingen som klienten faktisk produserte. Å endre HTTP-versjonen på destinasjonsforespørselen eller legge til en Host-header på nettstedforespørselen endrer ikke nødvendigvis den tidligere tunnelforespørselen.

På samme måte kan redigering av private felt i et gammelt Requests-adaptereksempel låse applikasjonen til et utdatert internt API. Foretrekk en kompatibel og støttet kombinasjon av klient og kjøretidsmiljø og en dokumentert proxyintegrasjon.

Hold de to samtalene atskilt i rapporten: HTTP-forespørselen som ble brukt til å åpne tunnelen, og deretter protokollen som ble forhandlet med destinasjonen inni den. De kan bruke ulike versjoner og feile på ulike stadier.

Relaterte artikler