Răspunsul Requests arată distorsionat în spatele unui proxy? Verificați suportul Brotli
Un Accept-Encoding:br copiat poate depăși suportul decodorului din mediul Requests găzduit.
Comparați laptopul și procesul găzduit pe două straturi diferite:
| Strat | Întrebare |
|---|---|
| Content-Encoding | Poate clientul decomprima octeții gzip/deflate/Brotli returnați? |
| Charset | Cum devin octeții decomprimați text? |
Requests gestionează de obicei gzip/deflate; Brotli necesită o bibliotecă instalată și acceptată. Un Accept-Encoding copiat manual poate anunța br atunci când acest mediu nu îl poate decodifica. Alegerea textului UTF-8 nu decomprimă Brotli.
Când negocierea este limitată intenționat:
response = session.get(
url,
proxies={"https": "http://proxy.example:8080"},
headers={"Accept-Encoding": "gzip, deflate"},
timeout=30,
)
response.raise_for_status()Folosiți Session existent, URL-ul HTTPS și antetele/autentificarea necesare. Comparați Accept-Encoding de ieșire, Content-Encoding de intrare și suportul pentru pachete pe ambele mașini; un intermediar care transformă poate furniza și metadate învechite. O comparație separată de pagină publică poate folosi Listă de proxy HTTP pentru URL-ul de proxy acolo unde intermediarii publici sunt permisi, fără acreditări de proxy moștenite, antete de cont copiate sau date private din corp.
În rest, preferați negocierea normală a clientului. Interfețele comode content/text din Requests decodează codificarea acceptată, așa că nu decomprimați din nou rezultatul doar pentru că antetul o numește.