Posebni znakovi u lozinkama proxyja
Kodirajte korisničko ime i lozinku proxyja odvojeno kako @, dvotočke, kose crte i # ne bi narušili URL.
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.