Gebruik voor een Basic-uitdaging van een HTTP-proxy ProxyBasicAuthHandler. Dit gewone HTTP-voorbeeld houdt de route en het account in één 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)

Gebruik het echte eindpunt en het account dat de beheerder levert. De handler gebruikt de wachtwoordbeheerder voor de uitdaging van de proxy; stem de bedoelde proxy-URI en realm af. De Basic-verificatie op de bestemming gebruikt een andere handler.

De opener rechtstreeks aanroepen houdt deze opzet lokaal. De URL van het verzoek blijft de website, niet de tussenpersoon. Deze onversleutelde HTTP-route versleutelt geen Basic-uitwisseling.

Leid uit dit voorbeeld geen HTTPS-tunnelondersteuning af. Een 407 tijdens CONNECT treedt op bij het opzetten, vóór een gewoon antwoord van de bestemming; de gekozen integratie moet daar de verificatie afhandelen. De inloghandler van de site wijzigen kan die eerdere uitdaging niet herstellen.

Proxy-URL's met inloggegevens zijn een ander formaat dat in oudere voorbeelden voorkomt. Als ze worden gebruikt, codeer URL-scheidingstekens correct en houd de resulterende geheime URL buiten de logboeken.

Gerelateerde artikelen