Spesialtegn i proxypassord
Kod proxybrukernavn og passord hver for seg, slik at @, kolon, skråstreker og # ikke ødelegger URL-en.
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.