urllib3 ProxyManager: skicka Basic-uppgifter i proxy_headers
Tillhandahåll Basic-proxyuppgifter via ProxyManager.proxy_headers så att de finns tillgängliga under HTTPS CONNECT utan att bli destinationsrubriker.
ProxyManager har ett separat argument, proxy_headers, för rubriker som skickas till mellanhanden. För en proxy som accepterar Basic authentication:
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)
För ett vanligt HTTP-mål följer dessa rubriker med den vidarebefordrade begäran till proxyn. För ett HTTPS-mål som använder CONNECT hör de till tunneluppsättningen i stället för varje krypterad webbplatsbegäran.
Det vanliga argumentet headers beskriver begäransrubriker för målet. Den här proxy authentication tillhör en annan mottagare. Att lägga proxyns konto där motsvarar inte att konfigurera det tidigare CONNECT-utbytet.
make_headers bygger Basic-rubrikens värde. Det förhandlar inte NTLM, väljer inte automatiskt ett schema som stöds och bevisar inte att proxyn accepterar kontot.
En proxy med en TLS-listener lägger till en separat proxy-TLS-kontext. http://-slutpunkten ovan beskriver medvetet en vanlig HTTP-listener som bär ett HTTPS-mål genom en tunnel.