Kontorproxyen ber om én konto. Nettstedet bak ber om en annen. Requests har egne inndata for disse to Basic-påloggingene: påloggingsdetaljer 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 oppsett for påloggingsdetaljer. Å 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 veien for et HTTPS-mål. Verdien begynner fortsatt med http:// fordi det er protokollen som brukes for å nå denne eksempelproxyen.

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

En 407 viser til utfordringen fra mellomleddet. En 401 fra nettstedet viser til utfordringen fra målet. Bruk det svaret til å avgjøre hvilken av de to oppsatte kontoene som trenger oppmerksomhet.

Relaterte artikler