urllib3 ProxyManager: send Basic-oplysninger i proxy_headers
Angiv Basic-proxyoplysninger via ProxyManager.proxy_headers, så de er tilgængelige under HTTPS CONNECT uden at blive destinationsheadere.
ProxyManager har et separat proxy_headers-argument til headere, der sendes til mellemleddet. Til en proxy, der accepterer Basic-godkendelse:
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)
For en almindelig HTTP-destination rejser disse headere med den videresendte anmodning til proxyen. For en HTTPS-destination med CONNECT hører de til tunnelopsætningen frem for hver krypteret webstedsanmodning.
Det almindelige headers-argument beskriver anmodningsheadere til destinationen. Denne proxygodkendelse hører til en anden modtager. At sætte proxyens konto der svarer ikke til at konfigurere den tidligere CONNECT-udveksling.
make_headers opbygger Basic-headerens værdi. Det forhandler ikke NTLM, vælger ikke automatisk et understøttet skema og beviser ikke, at proxyen accepterer den konto.
En proxy med en TLS-lytter tilføjer en separat proxy-TLS-kontekst. http://-endepunktet ovenfor beskriver bevidst en almindelig HTTP-lytter, der bærer en HTTPS-destination gennem en tunnel.