urllib3 ProxyManager: enviar credenciais Basic en proxy_headers
Subministre credenciais de proxy Basic mediante ProxyManager.proxy_headers para que estean dispoñibles durante HTTPS CONNECT sen converterse en cabeceiras de destino.
ProxyManager ten un argumento separado proxy_headers para as cabeceiras enviadas ao intermediario. Para un proxy que acepta autenticación 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 un destino HTTP simple, estas cabeceiras viaxan coa solicitude reenviada cara ao proxy. Para un destino HTTPS mediante CONNECT, pertencen á configuración do túnel e non a cada solicitude cifrada ao sitio web.
O argumento ordinario headers describe as cabeceiras de solicitude do destino. Esta autenticación de proxy pertence a outro destinatario. Poñer alí a conta do proxy non equivale a configurar o intercambio CONNECT anterior.
make_headers constrúe o valor da cabeceira Basic. Non negocia NTLM, non selecciona automaticamente un esquema compatible nin demostra que o proxy acepte esa conta.
Un proxy cun oínte TLS engade un contexto TLS de proxy separado. O punto de conexión http:// anterior describe deliberadamente un oínte HTTP ordinario que transporta un destino HTTPS por un túnel.