Lozinka koja sadrži @ ili # može narušiti ručno sastavljen proxy URL čak i kada su vjerodajnice točne. Ti znakovi već imaju značenje u URL-u pa klijent može dio lozinke protumačiti kao naziv računala ili fragment.

Kodirajte dva polja vjerodajnica odvojeno

Ovaj primjer čuva strukturne razdjelnike URL-a i kodira samo korisničko ime i lozinku:

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

Koristite stvarnu krajnju točku i vjerodajnice. Prikazana adresa dokumentacijski je primjer. Prazan argument safe je važan: quote obično ostavlja kosu crtu neizmijenjenu, ali kosu crtu unutar ovog polja treba kodirati.

Ne kodirajte cijeli proxy URL. Kodiranje razdjelnika sheme i znaka @ između vjerodajnica i računala uništava strukturu koju ste htjeli sačuvati. Nemojte ni već kodiranu lozinku kodirati drugi put.

Koristite rezultat s Requests

import requests

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

Ako zahtjev i dalje ne uspijeva, provjerite odbija li proxy prijavu ili je klijent ranije zakazao pri parsiranju ili povezivanju. Zahtjev za autentifikaciju 407 i neispravan URL različiti su kvarovi.

HTTPX može odvojiti autentifikaciju

HTTPX Proxy objekt može primiti krajnju točku i vjerodajnice kao odvojene argumente:

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

Time izbjegavate da sami sastavljate dio userinfo. To ne šifrira podatke neovisno o proxy vezi niti bira metodu autentifikacije koju podržava svaki servis.

Ako besplatan popis daje samo IP i priključak, ovaj primjer ne daje zadane vjerodajnice. Autentifikaciju koristite samo kada operater doista daje račun. URL-ove s vjerodajnicama ne stavljajte u zajedničke zapisnike i izvorne datoteke.

Povezani članci