Proxy Parolalarında Özel Karakterler
@, iki nokta, eğik çizgi ve # URL’yi bozmasın diye proxy kullanıcı adı ile parolasını ayrı kodlayın.
Kimlik bilgileri doğru olsa bile @ veya # içeren parola, elle oluşturulmuş proxy URL’sini bozabilir. Bu karakterlerin URL’de zaten anlamı vardır; dolayısıyla istemci parolanın bir bölümünü ana makine adı veya parça olarak ayrıştırabilir.
İki kimlik bilgisi alanını ayrı ayrı kodlayın
Bu örnek URL’nin yapısal ayırıcılarını korur ve yalnızca kullanıcı adıyla parolayı kodlar:
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"
)
Gerçek uç noktanızı ve kimlik bilgilerinizi kullanın. Gösterilen adres belge örneğidir. Boş safe argümanı önemlidir: quote normalde eğik çizgiyi kaçışlamaz, fakat bu kimlik bilgisi alanındaki eğik çizgi kodlanmalıdır.
Proxy URL’sinin tamamını kodlamayın. Şema ayırıcılarını ve kimlik bilgileriyle ana makine arasındaki @ işaretini kodlamak korumak istediğiniz yapıyı bozar. Zaten kodlanmış bir parolayı ikinci kez kodlamaktan da kaçının.
Sonucu Requests ile kullanın
import requests
response = requests.get(
"https://example.com/",
proxies={"http": proxy_url, "https": proxy_url},
timeout=(5, 15),
)
response.raise_for_status()
İstek hâlâ başarısızsa proxy’nin oturum açmayı mı reddettiğini yoksa istemcinin daha önce ayrıştırma veya bağlanma sırasında mı başarısız olduğunu inceleyin. 407 kimlik doğrulama isteği ile geçersiz URL farklı hatalardır.
HTTPX kimlik doğrulamayı ayrı tutabilir
HTTPX Proxy nesnesi uç noktayı ve kimlik bilgilerini ayrı argümanlar olarak alabilir:
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()
Böylece userinfo bölümünü kendiniz oluşturmazsınız. Bu, bilgileri proxy bağlantısından bağımsız şifrelemez veya bütün hizmetlerin desteklediği bir kimlik doğrulama yöntemini seçmez.
Ücretsiz liste yalnızca IP ve port veriyorsa bu örnek varsayılan kimlik bilgileri sağlamaz. Kimlik doğrulamayı yalnızca işletmeci gerçekten hesap verdiğinde kullanın. Kimlik bilgisi içeren URL’leri ortak günlüklere ve kaynak dosyalarına koymayın.