Python Requests: skilde Basic-innloggingar for proxy og nettstad
Send Basic-innlogginga til proxyen via URL-en og innlogginga til nettstaden via auth-argumentet i Requests.
Kontorproxyen krev éin konto. Nettstaden bak krev ein annan. Requests har skilde inndata for desse to Basic-innloggingane: påloggingsinformasjon i URL-en til proxyen og auth-argumentet i førespurnaden.
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()
Dei fire kontovariablane kjem frå konfigurasjonen av påloggingsinformasjon i applikasjonen. Å kode brukarnamn og passord til proxyen kvar for seg held på teikn som at-teiknet utan å gjere dei om til URL-skiljeteikn.
Nykelen https i ordboka vel denne vegen for eit HTTPS-mål. Verdien byrjar framleis med http://, fordi det er protokollen som vert brukt for å nå denne dømesproxyen.
For den HTTPS-førespurnaden høyrer proxy-innlogginga til CONNECT-utvekslinga. Innlogginga til nettstaden høyrer til den seinare førespurnaden gjennom tunnelen som er oppretta. Når adapteren leier ut proxy-autorisasjonen frå sin eigen URL, held han seg på riktig hopp; for dette Basic-tilfellet trengst ingen kombinert autentiseringsklasse.
Ein 407 viser til utfordringa frå mellomleddet. Ein 401 frå nettstaden viser til utfordringa frå målet. Bruk det svaret til å avgjere kva av dei to konfigurerte kontoane som treng merksemd.