urllib3 ProxyManager: Basic-inloggegevens in proxy_headers verzenden
Geef Basic-proxyreferenties mee via ProxyManager.proxy_headers zodat ze tijdens HTTPS CONNECT beschikbaar zijn zonder bestemmingsheaders te worden.
ProxyManager heeft een apart proxy_headers-argument voor headers die naar de tussenpartij worden gestuurd. Voor een proxy die Basic-authenticatie accepteert:
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)
Voor een gewone HTTP-bestemming reizen deze headers mee met het doorgestuurde verzoek naar de proxy. Voor een HTTPS-bestemming via CONNECT horen ze bij de tunnelopzet en niet bij elk versleuteld websiteverzoek.
Het gewone headers-argument beschrijft verzoekheaders voor de bestemming. Deze proxy-authenticatie hoort bij een andere ontvanger. Het proxy-account daar plaatsen is niet hetzelfde als de eerdere CONNECT-uitwisseling configureren.
make_headers bouwt de waarde van de Basic-header. Het onderhandelt niet over NTLM, kiest niet automatisch een ondersteund schema en bewijst niet dat de proxy dat account accepteert.
Een proxy met een TLS-listener voegt een aparte proxy-TLS-context toe. Het http://-eindpunt hierboven beschrijft bewust een gewone HTTP-listener die een HTTPS-bestemming via een tunnel vervoert.