Kirish ma’lumotlari to‘g‘ri bo‘lsa ham, @ yoki # bor parol qo‘lda yig‘ilgan proksi URL-ni buzishi mumkin. Bu belgilar URL-da allaqachon ma’noga ega, shuning uchun mijoz parolning bir qismini xost nomi yoki fragment deb talqin qilishi mumkin.

Kirish ma’lumotlarining ikki maydonini alohida kodlang

Bu misol URL-ning tuzilma ajratkichlarini saqlaydi va faqat foydalanuvchi nomi hamda parolni kodlaydi:

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"
)

Haqiqiy oxirgi nuqta va kirish ma’lumotlaringizni ishlating. Ko‘rsatilgan manzil hujjat misolidir. Bo‘sh safe argumenti muhim: quote odatda qiya chiziqni o‘zgartirmaydi, ammo bu kirish maydonidagi qiya chiziq kodlanishi kerak.

Butun proksi URL-ni kodlamang. Sxema ajratkichlari va kirish ma’lumotlari bilan xost orasidagi @ belgisini kodlash saqlamoqchi bo‘lgan tuzilmani buzadi. Allaqachon kodlangan parolni ikkinchi marta kodlashdan ham saqlaning.

Natijani Requests bilan ishlating

import requests

response = requests.get(
    "https://example.com/",
    proxies={"http": proxy_url, "https": proxy_url},
    timeout=(5, 15),
)
response.raise_for_status()

So‘rov hali ishlamasa, proksi kirishni rad etyaptimi yoki mijoz oldinroq tahlil yoki ulanish paytida muvaffaqiyatsiz bo‘lganmi, tekshiring. 407 autentifikatsiya talabi va yaroqsiz URL turli xatolardir.

HTTPX autentifikatsiyani ajratishi mumkin

HTTPX Proxy obyekti oxirgi nuqta va kirish ma’lumotlarini alohida argument sifatida olishi mumkin:

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()

Bu userinfo qismini o‘zingiz qurishdan qutqaradi. U ma’lumotlarni proksi ulanishidan mustaqil shifrlamaydi yoki barcha xizmat qo‘llaydigan autentifikatsiya usulini tanlamaydi.

Bepul ro‘yxat faqat IP va port bersa, bu misol standart kirish ma’lumotlari manbai emas. Operator haqiqatan hisob bergandagina autentifikatsiya ishlating. Kirish ma’lumotli URL-larni umumiy jurnallar va manba fayllariga yozmang.

O'xshash maqolalar