Python Requests: egne Basic-pålogginger for proxy og nettsted
Oppgi proxyens Basic-pålogging gjennom URL-en og nettstedets Basic-pålogging gjennom auth-argumentet i Requests.
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.