Den gamle udtalelse om, at Python altid sender HTTP/1.0 til CONNECT, er ikke længere en sikker generel regel. Python 3.12 ændrede http.client-tunnelering til HTTP/1.1 og tilføjede automatisk generering af Host-headeren, når den ikke angives.

Ændringen hører til den dokumenterede implementering af standardbiblioteket. Et HTTP-bibliotek på højere niveau kan tilsidesætte eller indpakke tunneladfærden, så notér dets version sammen med Pythons version.

Hvis en proxy afviser tunnelen, skal du undersøge den CONNECT-udveksling, som klienten faktisk har produceret. At ændre HTTP-versionen på destinationsanmodningen eller tilføje en Host-header til webstedsanmodningen ændrer ikke nødvendigvis den tidligere tunnelanmodning.

På samme måde kan redigering af private felter i et gammelt Requests-adaptereksempel låse applikationen til en forældet intern API. Foretræk en kompatibel understøttet kombination af klient og runtime samt en dokumenteret proxyintegration.

Hold de to samtaler adskilt i rapporten: den HTTP-anmodning, der bruges til at åbne tunnelen, og derefter den protokol, der forhandles med destinationen indeni. De kan bruge forskellige versioner og fejle på forskellige stadier.

Relaterede artikler