urllib3 ProxyManager: enviar credencials Basic a proxy_headers
Proporcioneu credencials de proxy Basic mitjançant ProxyManager.proxy_headers perquè estiguin disponibles durant HTTPS CONNECT sense esdevenir capçaleres de destinació.
ProxyManager té un argument separat proxy_headers per a les capçaleres enviades a l'intermediari. Per a un proxy que accepta autenticació 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)
Per a una destinació HTTP simple, aquestes capçaleres viatgen amb la petició reenviada cap al proxy. Per a una destinació HTTPS amb CONNECT, pertanyen a la configuració del túnel i no a cada petició xifrada al lloc web.
L'argument ordinari headers descriu les capçaleres de la petició de destinació. Aquesta autenticació de proxy pertany a un altre destinatari. Posar-hi el compte del proxy no equival a configurar l'intercanvi CONNECT anterior.
make_headers construeix el valor de la capçalera Basic. No negocia NTLM, no selecciona automàticament un esquema compatible ni demostra que el proxy accepti aquest compte.
Un proxy amb un oient TLS afegeix un context TLS de proxy separat. El punt de connexió http:// anterior descriu deliberadament un oient HTTP ordinari que transporta una destinació HTTPS per un túnel.