Et passord med @ eller # kan ødelegge en håndbygd proxy-URL selv om innloggingsopplysningene er riktige. Disse tegnene har allerede betydning i en URL, så klienten kan tolke en del av passordet som vertsnavn eller fragment.

Kod de to feltene med innloggingsopplysninger hver for seg

Dette eksemplet bevarer URL-ens strukturelle skilletegn og koder bare brukernavn og passord:

from urllib.parse import quote

username = "user@team"
password = "p:a/ss#?"
proxy_url = (
    "http://"
    + quote(username, safe="")
    + ":"
    + quote(password, safe="")
    + "@203.0.113.10:8080"
)

Bruk ditt faktiske endepunkt og dine innloggingsopplysninger. Adressen som vises, er et dokumentasjonseksempel. Det tomme safe-argumentet er viktig: quote lar vanligvis en skråstrek stå uendret, men i dette feltet må den kodes.

Ikke kod hele proxy-URL-en. Å kode skemaskilletegnene og @ mellom innloggingsopplysninger og vert ødelegger strukturen du ville bevare. Unngå også å kode et allerede kodet passord en gang til.

Bruk resultatet med Requests

import requests

response = requests.get(
    "https://example.com/",
    proxies={"http": proxy_url, "https": proxy_url},
    timeout=(5, 15),
)
response.raise_for_status()

Hvis forespørselen fortsatt feiler, undersøk om proxyen avviser innloggingen eller klienten feilet tidligere under tolking eller tilkobling. En 407-autentiseringsutfordring og en ugyldig URL er forskjellige feil.

HTTPX kan holde autentiseringen atskilt

Et HTTPX Proxy-objekt kan ta endepunkt og innloggingsopplysninger som separate argumenter:

import httpx

proxy = httpx.Proxy(
    "http://203.0.113.10:8080",
    auth=("user@team", "p:a/ss#?"),
)

with httpx.Client(proxy=proxy, trust_env=False, timeout=15) as client:
    response = client.get("https://example.com/")
    response.raise_for_status()

Da slipper du å bygge userinfo-delen selv. Det krypterer ikke opplysningene uavhengig av proxyforbindelsen og velger ikke en autentiseringsmetode som alle tjenester støtter.

Hvis en gratis liste bare oppgir IP og port, gir dette eksemplet ingen standardopplysninger for innlogging. Bruk autentisering bare når operatøren faktisk gir deg en konto. Hold URL-er med innloggingsopplysninger unna delte logger og kildefiler.

Relaterte artikler