Lykilorð með @ eða # getur skemmt handsmíðaða milliþjónsslóð þótt auðkennisupplýsingarnar séu réttar. Þessi tákn hafa þegar merkingu í slóð, þannig að biðlarinn getur túlkað hluta lykilorðsins sem hýsilheiti eða brot.

Kóðaðu auðkennisreitina tvo hvorn í sínu lagi

Þetta dæmi varðveitir skiljutákn slóðarinnar og kóðar aðeins notandanafn og lykilorð:

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

Notaðu raunverulegan endapunkt og auðkennisupplýsingar. Vistfangið sem sýnt er er skjölunardæmi. Tóma safe-viðfangið skiptir máli: quote skilur skástrik venjulega eftir óbreytt, en inni í þessum auðkennisreit verður að kóða það.

Ekki kóða alla milliþjónsslóðina. Kóðun skiljutákna skemans og @ milli auðkennisupplýsinga og hýsils eyðileggur bygginguna sem þú vildir varðveita. Forðastu einnig að kóða þegar kóðað lykilorð aftur.

Notaðu niðurstöðuna með Requests

import requests

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

Ef beiðnin bregst enn skaltu kanna hvort milliþjónninn hafni innskráningu eða biðlarinn hafi brugðist fyrr við þáttun eða tengingu. 407-auðkenningarkrafa og ógild slóð eru ólíkar bilanir.

HTTPX getur haldið auðkenningu aðskildri

Proxy-hlutur í HTTPX getur tekið endapunkt og auðkennisupplýsingar sem aðskilin viðföng:

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

Þá þarftu ekki að smíða userinfo-hlutann sjálfur. Það dulkóðar ekki upplýsingarnar óháð milliþjónstengingunni og velur ekki auðkenningaraðferð sem allar þjónustur styðja.

Ef ókeypis listi gefur aðeins IP og tengi er dæmið ekki uppspretta sjálfgefinna auðkennisupplýsinga. Notaðu auðkenningu aðeins þegar rekstraraðilinn gefur raunverulega aðgang. Ekki setja slóðir með auðkennisupplýsingum í sameiginlega annála eða frumkóðaskrár.

Tengdir greinar