Kontorets proxy krever én konto. Nettstedet bak krever en annen. Requests har separate inndata for disse to Basic-innloggingene: påloggingsinformasjon i proxyens URL og forespørselens auth-argument.

from urllib.parse import quote
import requests

proxy_url = (
    f"http://{quote(proxy_user, safe='')}:"
    f"{quote(proxy_password, safe='')}@proxy.example:8080"
)
response = requests.get(
    "https://reports.example/private/",
    proxies={"https": proxy_url},
    auth=(site_user, site_password),
    timeout=(5, 20),
)
response.raise_for_status()

De fire kontovariablene kommer fra applikasjonens konfigurasjon for påloggingsinformasjon. Å kode proxyens brukernavn og passord hver for seg bevarer tegn som et at-tegn uten å gjøre dem om til URL-skilletegn.

Nøkkelen https i ordboken velger denne ruten for et HTTPS-mål. Verdien begynner fortsatt med http:// fordi det er protokollen som brukes for å nå denne eksempelproxien.

For den HTTPS-forespørselen hører proxy-innloggingen til CONNECT-utvekslingen. Nettstedets innlogging hører til den senere forespørselen gjennom tunnelen som er etablert. Når adapteret utleder proxy-autorisasjonen fra sin egen URL, blir den værende på riktig hopp; for dette Basic-tilfellet trengs ingen kombinert autentiseringsklasse.

En 407 angir mellommennets utfordring. En 401 fra nettstedet angir målets utfordring. Bruk det svaret til å avgjøre hvilken av de to konfigurerte kontoene som trenger oppmerksomhet.

Relaterte artikler