Spesiale karakters in proxywagwoorde
Kodeer die instaanbedienergebruikersnaam en wagwoord afsonderlik sodat @, dubbelpunte, skuinsstrepe en # nie die URL breek nie.
'n Wagwoord met @ of # kan 'n handgemaakte instaanbediener-URL breek selfs wanneer die aanmeldbesonderhede korrek is. Dié karakters het reeds betekenisse in 'n URL, en die kliënt kan dus 'n deel van die wagwoord as gasheernaam of fragment ontleed.
Kodeer die twee aanmeldvelde afsonderlik
Hierdie voorbeeld behou die URL se strukturele skeidingstekens en kodeer net die gebruikersnaam en wagwoord:
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"
)
Gebruik jou werklike eindpunt en aanmeldbesonderhede. Die getoonde adres is 'n dokumentasievoorbeeld. Die leë safe-argument maak saak: quote laat 'n skuinsstreep gewoonlik onveranderd, maar binne hierdie aanmeldveld moet dit gekodeer word.
Moenie die hele instaanbediener-URL kodeer nie. Kodering van die skemaskeidingstekens en die @ tussen aanmeldbesonderhede en gasheer vernietig die struktuur wat jy wou behou. Vermy ook om 'n reeds gekodeerde wagwoord 'n tweede keer te kodeer.
Gebruik die resultaat met Requests
import requests
response = requests.get(
"https://example.com/",
proxies={"http": proxy_url, "https": proxy_url},
timeout=(5, 15),
)
response.raise_for_status()
As die versoek steeds misluk, kyk of die instaanbediener die aanmelding weier of die kliënt vroeër tydens ontleding of verbinding misluk het. 'n 407-verifikasie-uitdaging en 'n ongeldige URL is verskillende foute.
HTTPX kan verifikasie apart hou
'n HTTPX Proxy-objek kan die eindpunt en aanmeldbesonderhede as afsonderlike argumente ontvang:
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()
Dit vermy dat jy die userinfo-deel self moet opbou. Dit enkripteer nie die aanmeldbesonderhede onafhanklik van die instaanbedienerverbinding nie, en kies ook nie 'n verifikasiemetode wat elke diens ondersteun nie.
As 'n gratis lys slegs 'n IP en poort verskaf, gee hierdie voorbeeld nie verstekaanmeldbesonderhede nie. Gebruik verifikasie net wanneer die operateur werklik 'n rekening verskaf. Hou URL's met aanmeldbesonderhede uit gedeelde logboeke en bronlêers.