In wachtwurd mei @ of # kin in mei de hân boude proxy-URL brekke, sels as de oanmeldgegevens korrekt binne. Dy tekens hawwe al betsjutting yn in URL, sadat de kliïnt in part fan it wachtwurd as hostnamme of fragmint lêze kin.

Kodearje de twa oanmeldfjilden apart

Dit foarbyld hâldt de strukturele skiedingstekens fan de URL yntakt en kodearret allinnich brûkersnamme en wachtwurd:

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

Brûk dyn echte einpunt en oanmeldgegevens. It toande adres is in dokumintaasjefoarbyld. It lege safe-argumint is wichtich: quote lit in skeane streek ornaris ûnferoare, mar yn dit oanmeldfjild moat dy kodearre wurde.

Kodearje net de hiele proxy-URL. It kodearjen fan de skemaskieders en de @ tusken oanmeldgegevens en host fernielt de struktuer dy'tst behâlde woest. Foarkom ek datst in al kodearre wachtwurd noch in kear kodearrest.

Brûk it resultaat mei Requests

import requests

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

As it fersyk noch mislearret, kontrolearje oft de proxy de oanmelding wegeret of de kliïnt earder by it ûntleden of ferbinen mislearre. In 407-autentikaasjeútdaging en in ûnjildige URL binne ferskillende flaters.

HTTPX kin autentikaasje apart hâlde

In HTTPX Proxy-objekt kin it einpunt en oanmeldgegevens as aparte arguminten krije:

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

Sa hoechst it userinfo-part net sels op te bouwen. It fersiferet de gegevens net ûnôfhinklik fan de proxyferbining en kiest gjin autentikaasjemetoade dy't elke tsjinst stipet.

As in fergese list allinnich IP en poarte jout, jout dit foarbyld gjin standertoanmeldgegevens. Brûk autentikaasje allinnich as de behearder echt in akkount jout. Set gjin URL's mei oanmeldgegevens yn dielde logs of boarnebestannen.

Relatearre artikelen