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.

Ähnliche Artikel