urllib3 ProxyManager: enviar credenciais Basic em proxy_headers
Forneça credenciais de proxy Basic por meio de ProxyManager.proxy_headers para que fiquem disponíveis durante HTTPS CONNECT sem se tornarem cabeçalhos de destino.
O ProxyManager tem um argumento separado proxy_headers para cabeçalhos enviados ao intermediário. Para um proxy que aceita autenticação Basic:
import urllib3
proxy_headers = urllib3.make_headers(
proxy_basic_auth=f'{proxy_user}:{proxy_password}'
)
with urllib3.ProxyManager(
'http://proxy.example:8080',
proxy_headers=proxy_headers,
timeout=urllib3.Timeout(connect=5, read=10),
) as http:
response = http.request('GET', 'https://service.example/data')
print(response.status)
Para um destino HTTP simples, esses cabeçalhos viajam com a solicitação encaminhada até o proxy. Para um destino HTTPS via CONNECT, eles pertencem à configuração do túnel e não a cada solicitação criptografada ao site.
O argumento comum headers descreve os cabeçalhos da solicitação de destino. Esta autenticação de proxy pertence a outro destinatário. Colocar ali a conta do proxy não equivale a configurar a troca CONNECT anterior.
make_headers constrói o valor do cabeçalho Basic. Ele não negocia NTLM, não seleciona automaticamente um esquema compatível e não prova que o proxy aceite essa conta.
Um proxy com um listener TLS adiciona um contexto TLS de proxy separado. O endpoint http:// acima descreve deliberadamente um listener HTTP comum que transporta um destino HTTPS por um túnel.