Проксийн нууц үг дэх тусгай тэмдэгтүүд
@, хоёр цэг, налуу зураас, # нь URL-ийг эвдэхээс сэргийлж хэрэглэгчийн нэр, нууц үгийг тус тусад нь кодлоно.
Нэвтрэх мэдээлэл зөв байсан ч @ эсвэл # агуулсан нууц үг гараар бүтээсэн прокси URL-ийг эвдэж болно. Эдгээр тэмдэгт URL-д аль хэдийн утгатай тул клиент нууц үгийн нэг хэсгийг хостын нэр эсвэл фрагмент гэж тайлбарлаж болно.
Нэвтрэх мэдээллийн хоёр талбарыг тусад нь кодло
Энэ жишээ URL-ийн бүтцийн тусгаарлагчийг хэвээр үлдээж зөвхөн хэрэглэгчийн нэр ба нууц үгийг кодлоно:
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"
)
Бодит төгсгөлийн цэг болон нэвтрэх мэдээллээ ашиглана. Харуулсан хаяг бол баримтын жишээ. safe аргументыг хоосон байлгах нь чухал: quote ердийн үед налуу зураасыг хувиргахгүй ч энэ нэвтрэх талбар дотор кодлох шаардлагатай.
Прокси URL-ийг бүхэлд нь бүү кодло. Схемийн тусгаарлагч, нэвтрэх мэдээлэл ба хостын хоорондох @-г кодлох нь хадгалах гэсэн бүтцийг эвдэнэ. Мөн кодлосон нууц үгийг хоёр дахь удаа бүү кодло.
Үр дүнг Requests-тэй ашигла
import requests
response = requests.get(
"https://example.com/",
proxies={"http": proxy_url, "https": proxy_url},
timeout=(5, 15),
)
response.raise_for_status()
Хүсэлт бүтэлгүйтсээр байвал прокси нэвтрэлтийг татгалзсан уу эсвэл клиент өмнө нь задлан шинжлэх, холбогдох үед алдаа гаргасан уу гэдгийг шалгана. 407 таних баталгаажуулалтын шаардлага ба хүчингүй URL нь өөр алдаанууд юм.
HTTPX таних баталгаажуулалтыг тусад нь байлгаж чадна
HTTPX-ийн Proxy объект төгсгөлийн цэг ба нэвтрэх мэдээллийг тусдаа аргументаар авч чадна:
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()
Ингэснээр userinfo хэсгийг өөрөө бүтээх шаардлагагүй. Энэ нь нэвтрэх мэдээллийг прокси холболтоос тусад нь шифрлэхгүй, бүх үйлчилгээний дэмждэг таних баталгаажуулалтын аргыг сонгохгүй.
Үнэгүй жагсаалт зөвхөн IP ба порт өгвөл энэ жишээ үндсэн нэвтрэх мэдээлэл өгөхгүй. Үйлчилгээний эзэн үнэхээр бүртгэл өгсөн үед л таних баталгаажуулалт ашигла. Нэвтрэх мэдээлэлтэй URL-ийг хуваалцсан лог болон эх файлд бүү оруул.