Ziet een Requests-antwoord erachter een proxy verminkt uit? Controleer Brotli-ondersteuning
Een gekopieerde Accept-Encoding:br kan de decoderondersteuning van de gehoste Requests-omgeving voorbijstreven.
Vergelijk de laptop en het gehoste proces op twee verschillende lagen:
| Laag | Vraag |
|---|---|
| Content-Encoding | Kan de client de geretourneerde gzip/deflate/Brotli-bytes decomprimeren? |
| Charset | Hoe worden gedecomprimeerde bytes tekst? |
Requests verwerkt normaal gzip/deflate; Brotli vereist een ondersteunde ge installeerde bibliotheek. Een handmatig gekopieerde Accept-Encoding kan br adverteren terwijl deze omgeving het niet kan decoderen. De keuze van UTF-8-tekst decomprimeert Brotli niet.
Wanneer de onderhandeling bewust wordt beperkt:
response = session.get(
url,
proxies={"https": "http://proxy.example:8080"},
headers={"Accept-Encoding": "gzip, deflate"},
timeout=30,
)
response.raise_for_status()Gebruik de bestaande Session, de HTTPS-URL en de vereiste headers/authenticatie. Vergelijk uitgaande Accept-Encoding, inkomende Content-Encoding en pakketondersteuning op beide machines; een transformerende tussenpartij kan ook verouderde metadata leveren. Een aparte vergelijking van een openbare pagina kan Lijst met HTTP-proxy s gebruiken voor zijn proxy-URL waar openbare tussenpartijen zijn toegestaan, zonder overge erving van proxyreferenties, gekopieerde accountheaders of prive-bodygegevens.
Geef anders de voorkeur aan normale clientonderhandeling. De handige content/text-interfaces van Requests decoderen ondersteunde codering, dus decomprimeer hun uitvoer niet opnieuw alleen omdat de header die noemt.