Compare o portátil e o processo hospedado em duas camadas diferentes:

CamadaPergunta
Content-EncodingO cliente consegue descomprimir os bytes gzip/deflate/Brotli devolvidos?
CharsetComo os bytes descomprimidos se tornam texto?

O Requests normalmente trata gzip/deflate; Brotli exige uma biblioteca suportada instalada. Um Accept-Encoding copiado à mão pode anunciar br quando este ambiente não consegue decodificá-lo. Escolher texto UTF-8 não descomprime Brotli.

Quando a negociação é limitada de propósito:

response = session.get(
    url,
    proxies={"https": "http://proxy.example:8080"},
    headers={"Accept-Encoding": "gzip, deflate"},
    timeout=30,
)
response.raise_for_status()

Use a Session existente, o URL HTTPS e os cabeçalhos/autenticação necessários. Compare o Accept-Encoding de saída, o Content-Encoding de entrada e o suporte a pacotes nas duas máquinas; um intermediário que transforma também pode fornecer metadados desatualizados. Uma comparação separada de página pública pode usar Lista de proxies HTTP para o URL do proxy onde intermediários públicos são permitidos, sem credenciais de proxy herdadas, cabeçalhos de conta copiados ou dados privados do corpo.

Caso contrário, prefira a negociação normal do cliente. As interfaces práticas content/text do Requests decodificam a codificação suportada, então não descomprima a saída delas de novo só porque o cabeçalho a nomeia.

Artigos relacionados