Адказ Requests за праксі выглядае пашкоджаным? Праверце падтрымку Brotli
Скапіяваны Accept-Encoding:br можа апярэдзіць падтрымку дэкодэра ў асяроддзі Requests на хосце.
Параўнайце ноўтбук і працэс на хосце на двух розных узроўнях:
| Узровень | Пытанне |
|---|---|
| Content-Encoding | Ці можа кліент распакаваць вернутыя байты gzip/deflate/Brotli? |
| Charset | Як распакаваныя байты ператвараюцца ў тэкст? |
Requests звычайна апрацоўвае gzip/deflate; Brotli патрабуе ўсталяванай бібліятэкі з падтрымкай. Скапіяваны ўручную Accept-Encoding можа абвяшчаць br, калі гэтае асяроддзе не можа яго дэкадаваць. Выбар тэксту UTF-8 не распакоўвае Brotli.
Калі наўмысна абмяжоўваюць перамовы:
response = session.get(
url,
proxies={"https": "http://proxy.example:8080"},
headers={"Accept-Encoding": "gzip, deflate"},
timeout=30,
)
response.raise_for_status()Выкарыстоўвайце існуючы Session, HTTPS URL і неабходныя загалоўкі/аўтэнтыфікацыю. Параўнайце выходны Accept-Encoding, уваходны Content-Encoding і падтрымку пакетаў на абедзвюх машынах; пераўтваральны пасрэднік таксама можа даваць састарэлыя метаданыя. Асобнае параўнанне публічнай старонкі можа выкарыстоўваць Спіс HTTP-проксі для адраса проксі там, дзе публічныя пасрэднікі дазволены, без перанятых уліковых даных проксі, скапіяваных загалоўкаў уліковага запісу або прыватных даных цела.
Інакш аддавайце перавагу звычайным кліенцкім перамовам. Зручныя інтэрфейсы content/text у Requests дэкодуюць падтрымліваемыя кадаванні, таму не распакоўвайце іх выхад паўторна толькі таму, што загаловак называе яго.