De oude bewering dat Python voor CONNECT altijd HTTP/1.0 verstuurt, is niet langer een veilige algemene regel. Python 3.12 veranderde het tunnelen van http.client naar HTTP/1.1 en voegde automatische generatie van de Host-header toe wanneer die niet wordt opgegeven.

Die wijziging hoort bij de gedocumenteerde implementatie van de standaardbibliotheek. Een HTTP-bibliotheek op een hoger niveau kan het tunnelgedrag overschrijven of omhullen, dus noteer de versie ervan en die van Python.

Als een proxy de tunnel weigert, onderzoek dan de CONNECT-uitwisseling die die client werkelijk heeft geproduceerd. De HTTP-versie van de bestemmingsaanvraag wijzigen of een Host-header aan de websiteaanvraag toevoegen verandert niet noodzakelijk de eerdere tunnelaanvraag.

Evenzo kan het bewerken van privévelden in een oud Requests-adaptervoorbeeld de applicatie vastzetten op een verouderde interne API. Geef de voorkeur aan een compatibele, ondersteunde combinatie van client en runtime en een gedocumenteerde proxy-integratie.

Houd de twee gesprekken gescheiden in het rapport: de HTTP-aanvraag die is gebruikt om de tunnel te openen, en daarna het protocol dat daarbinnen met de bestemming is onderhandeld. Ze kunnen verschillende versies gebruiken en in verschillende fasen mislukken.

Gerelateerde artikelen