A resposta do Requests parece corrompida atrás de um proxy? Verifique o suporte a Brotli
Um Accept-Encoding:br copiado pode ultrapassar o suporte do decodificador do ambiente Requests hospedado.
Compare o portátil e o processo hospedado em duas camadas diferentes:
| Camada | Pergunta |
|---|---|
| Content-Encoding | O cliente consegue descomprimir os bytes gzip/deflate/Brotli devolvidos? |
| Charset | Como 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.