Karattri speċjali fil-passwords tal-proxy
Ikkodifika l-isem tal-utent u l-password separatament biex @, żewġ punti, slashes u # ma jkissrux il-URL.
Password b’@ jew # tista’ tkisser URL ta’ proxy mibni bl-idejn anki meta l-kredenzjali huma korretti. Dawn il-karattri diġà għandhom tifsira f’URL, u l-klijent jista’ jinterpreta parti mill-password bħala isem tal-host jew framment.
Ikkodifika ż-żewġ oqsma tal-kredenzjali separatament
Dan l-eżempju jżomm is-separaturi strutturali tal-URL u jikkodifika biss l-isem tal-utent u l-password:
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"
)
Uża l-punt finali u l-kredenzjali reali tiegħek. L-indirizz muri huwa eżempju ta’ dokumentazzjoni. L-argument safe vojt huwa importanti: quote normalment iħalli slash mhux escaped, iżda slash f’dan il-qasam jeħtieġ kodifikazzjoni.
Tikkodifikax il-URL kollu tal-proxy. Il-kodifikazzjoni tas-separaturi tal-iskema u tal-@ bejn il-kredenzjali u l-host teqred l-istruttura li ridt iżżomm. Evita wkoll li tikkodifika password diġà kkodifikata għat-tieni darba.
Uża r-riżultat ma’ Requests
import requests
response = requests.get(
"https://example.com/",
proxies={"http": proxy_url, "https": proxy_url},
timeout=(5, 15),
)
response.raise_for_status()
Jekk it-talba għadha tfalli, eżamina jekk il-proxy jirrifjutax il-login jew jekk il-klijent falliex qabel waqt l-analiżi jew il-konnessjoni. Sfida ta’ awtentikazzjoni 407 u URL invalidu huma fallimenti differenti.
HTTPX jista’ jżomm l-awtentikazzjoni separata
Oġġett Proxy ta’ HTTPX jista’ jieħu l-punt finali u l-kredenzjali bħala argumenti separati:
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()
Dan jevita li tibni l-parti userinfo inti stess. Ma jikkriptax il-kredenzjali indipendentement mill-konnessjoni tal-proxy u ma jagħżilx metodu ta’ awtentikazzjoni appoġġat minn kull servizz.
Jekk lista b’xejn tipprovdi biss IP u port, dan l-eżempju ma jipprovdix kredenzjali predefiniti. Uża l-awtentikazzjoni biss meta l-operatur tassew jagħti kont. Tpoġġix URLs bi kredenzjali f’logs kondiviżi jew fajls tas-sors.