For en Basic-utfordring fra en HTTP-proxy, bruk ProxyBasicAuthHandler. Dette vanlige HTTP-eksemplet holder ruten og kontoen i é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)

Bruk det faktiske endepunktet og kontoen operatøren har gitt. Handleren bruker passordbehandleren for proxyens utfordring; tilpass den tiltenkte proxy-URI-en og realm. Basic-autentisering på destinasjonen bruker en annen handler.

Å kalle openeren direkte holder dette oppsettet lokalt. Forespørselens URL forblir nettstedet, ikke mellomleddet. Denne klare HTTP-ruten krypterer ikke en Basic-utveksling.

Ikke utled HTTPS-tunnelstøtte fra dette eksemplet. En 407 under CONNECT skjer ved oppsettet, før et vanlig svar fra destinasjonen; integrasjonen du velger, må håndtere autentisering der. Å bytte innloggingshandleren på nettstedet kan ikke reparere den tidligere utfordringen.

Proxy-URL-er med legitimasjon er et annet format som finnes i eldre eksempler. Hvis de brukes, kod URL-avgrensere riktig og hold den resulterende hemmelighetsbærende URL-en utenfor loggene.

Relaterte artikler