urllib3 ProxyManager: Basic-Anmeldedaten in proxy_headers senden
Stellen Sie Basic-Proxy-Anmeldedaten über ProxyManager.proxy_headers bereit, damit sie während HTTPS CONNECT verfügbar sind, ohne zu Ziel-Headern zu werden.
ProxyManager besitzt ein separates Argument proxy_headers für Header, die an den Vermittler gesendet werden. Für einen Proxy, der Basic-Authentifizierung akzeptiert:
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)
Bei einem einfachen HTTP-Ziel wandern diese Header mit der weitergeleiteten Anfrage zum Proxy. Bei einem HTTPS-Ziel über CONNECT gehören sie zum Tunnelaufbau und nicht zu jeder verschlüsselten Website-Anfrage.
Das gewöhnliche Argument headers beschreibt Anfrage-Header für das Ziel. Diese Proxy-Authentifizierung richtet sich an einen anderen Empfänger. Das Proxy-Konto dort zu hinterlegen ist nicht gleichbedeutend mit dem Konfigurieren des vorherigen CONNECT-Austauschs.
make_headers erzeugt den Basic-Header-Wert. Es handelt NTLM nicht aus, wählt kein unterstütztes Verfahren automatisch aus und beweist nicht, dass der Proxy dieses Konto akzeptiert.
Ein Proxy mit TLS-Listener fügt einen separaten Proxy-TLS-Kontext hinzu. Der obige http://-Endpunkt beschreibt bewusst einen gewöhnlichen HTTP-Listener, der ein HTTPS-Ziel durch einen Tunnel führt.