Параўнайце ноўтбук і працэс на хосце на двух розных узроўнях:

УзровеньПытанне
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 дэкодуюць падтрымліваемыя кадаванні, таму не распакоўвайце іх выхад паўторна толькі таму, што загаловак называе яго.

Падобныя артыкулы