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.

Artikli relatati