Requests atsakymas atrodo sugadintas už proxy? Patikrinkite Brotli palaikymą
Nukopijuotas Accept-Encoding:br gali pralenkti prieglobos Requests aplinkos dekoderio palaikymą.
Palyginkite nešiojamąjį kompiuterį ir prieglobos procesą dviem skirtingais sluoksniais:
| Sluoksnis | Klausimas |
|---|---|
| Content-Encoding | Ar klientas gali išskleisti grąžintus gzip/deflate/Brotli baitus? |
| Charset | Kaip išskleisti baitai tampa tekstu? |
Requests paprastai apdoroja gzip/deflate; Brotli reikia įdiegtos palaikomos bibliotekos. Rankiniu būdu nukopijuotas Accept-Encoding gali skelbti br, nors ši aplinka jo negali iškoduoti. UTF-8 teksto pasirinkimas neišskleidžia Brotli.
Kai sąmoningai ribojamos derybos:
response = session.get(
url,
proxies={"https": "http://proxy.example:8080"},
headers={"Accept-Encoding": "gzip, deflate"},
timeout=30,
)
response.raise_for_status()Naudokite esamą Session, HTTPS URL ir reikiamas antraštes/autentifikaciją. Palyginkite išeinantį Accept-Encoding, įeinantį Content-Encoding ir paketų palaikymą abiejose mašinose; transformuojantis tarpininkas taip pat gali pateikti pasenusius metaduomenis. Atskiras viešo puslapio palyginimas gali naudoti HTTP proxy sąrašas savo proxy URL ten, kur leidžiami vieši tarpininkai, be paveldėtų proxy kredencialų, nukopijuotų paskyros antraščių ar privačių turinio duomenų.
Kitu atveju pirmenybę teikite įprastoms kliento deryboms. Patogios Requests content/text sąsajos iškoduoja palaikomą kodavimą, todėl neišskleiskite jų išvesties dar kartą vien todėl, kad antraštė ją įvardija.