Sértákn í lykilorðum milliþjóna
Kóðaðu notandanafn og lykilorð milliþjóns hvort í sínu lagi svo @, tvípunktar, skástrik og # skemmi ekki slóðina.
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.