Für eine Basic-Herausforderung eines HTTP-Proxys verwenden Sie ProxyBasicAuthHandler. Dieses gewöhnliche HTTP-Beispiel hält Route und Konto in einem Opener:

import os
from urllib.request import (
    ProxyHandler, ProxyBasicAuthHandler,
    HTTPPasswordMgrWithDefaultRealm, build_opener,
)

proxy_url = 'http://proxy.example:8080'
passwords = HTTPPasswordMgrWithDefaultRealm()
passwords.add_password(
    None, proxy_url,
    os.environ['PROXY_USER'], os.environ['PROXY_PASSWORD'],
)
opener = build_opener(
    ProxyHandler({'http': proxy_url}),
    ProxyBasicAuthHandler(passwords),
)
with opener.open('http://example.com/', timeout=10) as response:
    print(response.status)

Verwenden Sie den echten Endpunkt und das vom Betreiber bereitgestellte Konto. Der Handler nutzt den Passwort-Manager für die Herausforderung des Proxys; stimmen Sie die vorgesehene Proxy-URI und Realm ab. Die Basic-Authentifizierung am Ziel verwendet einen anderen Handler.

Der direkte Aufruf des Openers hält diese Einrichtung lokal. Die Anforderungs-URL bleibt die Website, nicht der Vermittler. Diese unverschlüsselte HTTP-Route verschlüsselt keinen Basic-Austausch.

Leiten Sie aus diesem Beispiel keine HTTPS-Tunnelunterstützung ab. Ein 407 während CONNECT tritt beim Aufbau auf, vor einer gewöhnlichen Antwort des Ziels; die gewählte Integration muss die Authentifizierung dort behandeln. Ein Wechsel des Login-Handlers der Website kann diese frühere Herausforderung nicht beheben.

Proxy-URLs mit Anmeldedaten sind ein anderes Format, das in älteren Beispielen vorkommt. Wenn Sie es verwenden, kodieren Sie URL-Trennzeichen korrekt und halten Sie die entstehende geheime URL aus Protokollen heraus.

Ähnliche Artikel