Eit passord med @ eller # kan øydeleggje ein handbygd proxy-URL sjølv om innloggingsopplysningane er rette. Desse teikna har alt tyding i ein URL, så klienten kan tolke ein del av passordet som vertsnamn eller fragment.

Kod dei to felta med innloggingsopplysningar kvar for seg

Dette dømet tek vare på dei strukturelle skiljeteikna i URL-en og kodar berre brukarnamn 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"
)

Nytt ditt faktiske endepunkt og dine innloggingsopplysningar. Adressa som vert vist, er eit dokumentasjonsdøme. Det tomme safe-argumentet er viktig: quote lèt vanlegvis ein skråstrek stå uendra, men i dette feltet må han kodast.

Ikkje kod heile proxy-URL-en. Å kode skemaskiljeteikna og @ mellom innloggingsopplysningar og vert øydelegg strukturen du ville ta vare på. Unngå òg å kode eit alt koda passord ein gong til.

Nytt 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()

Dersom førespurnaden framleis feilar, undersøk om proxyen avviser innlogginga eller klienten feila tidlegare under tolking eller tilkopling. Ei 407-autentiseringsutfordring og ein ugyldig URL er ulike feil.

HTTPX kan halde autentiseringa skild

Eit HTTPX Proxy-objekt kan ta endepunkt og innloggingsopplysningar som separate argument:

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()

Då slepp du å byggje userinfo-delen sjølv. Det krypterer ikkje opplysningane uavhengig av proxysambandet og vel ikkje ein autentiseringsmetode som alle tenester støttar.

Dersom ei gratis liste berre oppgjev IP og port, gjev dette dømet ingen standardopplysningar for innlogging. Nytt autentisering berre når operatøren faktisk gjev deg ein konto. Hald URL-ar med innloggingsopplysningar unna delte loggar og kjeldefiler.

Relaterte artiklar