Giriş məlumatları doğru olsa belə, @ və ya # olan parol əl ilə qurulan proksi URL-ini poza bilər. Bu simvolların URL-də artıq mənası var; müştəri parolun bir hissəsini host adı və ya fraqment kimi təhlil edə bilər.

Giriş məlumatlarının iki sahəsini ayrı kodlaşdırın

Bu nümunə URL-in struktur ayırıcılarını saxlayır, yalnız istifadəçi adı və parolu kodlaşdırır:

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

Həqiqi son nöqtənizi və giriş məlumatlarınızı işlədin. Göstərilən ünvan sənədləşdirmə nümunəsidir. Boş safe arqumenti vacibdir: quote adətən əyri xətti dəyişmir, lakin bu giriş məlumatı sahəsindəki əyri xətt kodlaşdırılmalıdır.

Bütün proksi URL-ini kodlaşdırmayın. Sxem ayırıcılarını və giriş məlumatları ilə host arasındakı @ işarəsini kodlaşdırmaq qorumaq istədiyiniz strukturu dağıdır. Artıq kodlaşdırılmış parolu ikinci dəfə kodlaşdırmaqdan da çəkinin.

Nəticəni Requests ilə işlədin

import requests

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

Sorğu yenə uğursuz olursa, proksinin girişi rədd etdiyini, yoxsa müştərinin daha əvvəl təhlil və ya qoşulma zamanı uğursuz olduğunu yoxlayın. 407 autentifikasiya tələbi və etibarsız URL fərqli xətalardır.

HTTPX autentifikasiyanı ayrı saxlaya bilər

HTTPX Proxy obyekti son nöqtəni və giriş məlumatlarını ayrı arqumentlər kimi qəbul edə bilər:

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 hissəsini özünüz qurmaq ehtiyacını aradan qaldırır. Giriş məlumatlarını proksi bağlantısından müstəqil şifrələmir və bütün xidmətlərin dəstəklədiyi autentifikasiya üsulunu seçmir.

Pulsuz siyahı yalnız IP və port verirsə, bu nümunə standart giriş məlumatı mənbəyi deyil. Autentifikasiyanı yalnız operator həqiqətən hesab verdikdə işlədin. Giriş məlumatlı URL-ləri ortaq jurnallara və mənbə fayllarına yazmayın.

Əlaqəli məqalələr