Karakteret speciale në fjalëkalimet e proxy-t
Kodoni veçmas emrin e përdoruesit dhe fjalëkalimin që @, dy pikat, pjerrëzat dhe # të mos prishin URL-në.
Një fjalëkalim me @ ose # mund të prishë një URL proxy të ndërtuar me dorë edhe kur kredencialet janë të sakta. Këto karaktere kanë tashmë kuptim në URL, kështu klienti mund të lexojë një pjesë të fjalëkalimit si emër hosti ose fragment.
Kodoni veçmas dy fushat e kredencialeve
Ky shembull ruan ndarësit strukturorë të URL-së dhe kodon vetëm emrin e përdoruesit dhe fjalëkalimin:
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"
)
Përdorni pikën fundore dhe kredencialet tuaja reale. Adresa e treguar është shembull dokumentacioni. Argumenti safe bosh është i rëndësishëm: quote zakonisht e lë pjerrëzën pa escape, por brenda kësaj fushe ajo duhet koduar.
Mos kodoni gjithë URL-në e proxy-t. Kodimi i ndarësve të skemës dhe i @ mes kredencialeve dhe hostit shkatërron strukturën që donit të ruanit. Shmangni gjithashtu kodimin për herë të dytë të një fjalëkalimi tashmë të koduar.
Përdoreni rezultatin me Requests
import requests
response = requests.get(
"https://example.com/",
proxies={"http": proxy_url, "https": proxy_url},
timeout=(5, 15),
)
response.raise_for_status()
Nëse kërkesa ende dështon, kontrolloni nëse proxy refuzon hyrjen apo klienti ka dështuar më herët gjatë analizimit ose lidhjes. Një sfidë autentikimi 407 dhe një URL e pavlefshme janë dështime të ndryshme.
HTTPX mund ta mbajë autentikimin të ndarë
Një objekt Proxy i HTTPX mund të marrë pikën fundore dhe kredencialet si argumente të veçanta:
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()
Kjo shmang ndërtimin manual të pjesës userinfo. Nuk i enkripton kredencialet në mënyrë të pavarur nga lidhja proxy dhe nuk zgjedh një metodë autentikimi që mbështetet nga çdo shërbim.
Nëse një listë falas jep vetëm IP dhe portë, ky shembull nuk jep kredenciale të parazgjedhura. Përdorni autentikim vetëm kur operatori siguron vërtet llogari. Mos vendosni URL me kredenciale në regjistra të përbashkët ose skedarë burimorë.