Aksara Khas dalam Kata Laluan Proksi
Kodkan nama pengguna dan kata laluan proksi secara berasingan supaya @, titik bertindih, garis miring dan # tidak merosakkan URL.
Kata laluan dengan @ atau # boleh merosakkan URL proksi yang dibina sendiri walaupun bukti kelayakan betul. Aksara itu sudah mempunyai makna dalam URL, jadi klien mungkin mentafsir sebahagian kata laluan sebagai nama hos atau fragmen.
Kodkan dua medan bukti kelayakan secara berasingan
Contoh ini mengekalkan pemisah struktur URL dan hanya mengekodkan nama pengguna serta kata laluan:
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"
)
Gunakan titik akhir dan bukti kelayakan sebenar anda. Alamat yang dipaparkan ialah contoh dokumentasi. Argumen safe kosong itu penting: quote biasanya membiarkan garis miring tanpa pelarian, tetapi garis miring dalam medan ini perlu dikodkan.
Jangan kodkan seluruh URL proksi. Mengekodkan pemisah skema dan @ antara bukti kelayakan dengan hos merosakkan struktur yang mahu dikekalkan. Elakkan juga mengekodkan kata laluan yang sudah dikodkan untuk kali kedua.
Gunakan hasilnya dengan Requests
import requests
response = requests.get(
"https://example.com/",
proxies={"http": proxy_url, "https": proxy_url},
timeout=(5, 15),
)
response.raise_for_status()
Jika permintaan masih gagal, periksa sama ada proksi menolak log masuk atau klien gagal lebih awal semasa menghuraikan atau menyambung. Cabaran pengesahan 407 dan URL tidak sah ialah kegagalan yang berbeza.
HTTPX boleh mengasingkan pengesahan
Objek Proxy HTTPX boleh menerima titik akhir dan bukti kelayakan sebagai argumen berasingan:
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()
Ini mengelakkan pembinaan bahagian userinfo sendiri. Ia tidak menyulitkan bukti kelayakan secara bebas daripada sambungan proksi atau memilih kaedah pengesahan yang disokong semua perkhidmatan.
Jika senarai percuma hanya memberikan IP dan port, contoh ini tidak menyediakan bukti kelayakan lalai. Gunakan pengesahan hanya apabila pengendali benar-benar memberikan akaun. Jangan letakkan URL yang mengandungi bukti kelayakan dalam log dikongsi dan fail sumber.