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.

Relaterte artiklar