from urllib.request import ProxyHandler, build_opener

def make_proxy_opener(proxy_uri):
    return build_opener(ProxyHandler({
        "http": proxy_uri,
        "https": proxy_uri,
    }))

opener = make_proxy_opener("http://proxy.example.net:8080")
# Use opener.open(destination, timeout=10) for this route.

Marşrut yoxlamaya aiddirsə, bu opener-in öz open metodunu çağırın. Nümunənin HTTP son nöqtəsi xidmətinizdən və ya ictimai yoxlamalar üçün HTTP proksi siyahısından gələ bilər. Fraqment sahibliyi göstərir; tam autentifikasiya və ya sağlamlıq siyasətini müəyyən etmir. Hesaba aid hər hansı handler-i həmin nəzərdə tutulan müştəriyə bağlı saxlayın.

urllib.request.install_opener() sonrakı modul səviyyəli urlopen() çağırışlarının istifadə etdiyi proses üzrə standartı dəyişir. Buna görə proksilər üzrə dövr edən yoxlayıcı əlaqəsiz sorğuları son son nöqtəsindən istifadə edərək qoya bilər. Müvəqqəti quraşdırma və təmizləmədə bərpa etmə yenə də paylaşılan dəyişiklik zamanı paralel sorğuların işləməsinə icazə verir.

socket.setdefaulttimeout() eyni şəkildə sonradan yaradılan socket-lər üçün standartları dəyişir. Yalnız yoxlama onu almalı olduqda əməliyyat səviyyəsində timeout istifadə edin.

Yoxlama cavablarını bağlayın və nəticələrini konkret saxlayın: HTTP xəta cavabı avtomatik olaraq ölü proksi dinləyicisi deyil. Sinxron urllib yoxlaması asinxron xidmətdə istifadə olunursa, bloklayan işi uyğun işçiyə köçürün; bu icra qərarı qlobal opener dəyişikliyini təcrid etmir.

Yoxlama başqa şəbəkə siyasəti qoymadan müşahidəsini qaytarmalıdır. Öz müştəri obyekti və məhdud əməliyyat bu sərhədi açıq edir.

Əlaqəli məqalələr