Python urllib: bir opener üçün proksiləri söndürün
Digər müştəriləri və proses mühitini dəyişmədən ProxyHandler({}) ilə birbaşa qoşulan urllib opener yaradın.
Bir urllib opener birbaşa qoşulmalıdırsa, ProxyHandler-ə boş xəritələmə ötürün:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
with direct.open("https://example.com/", timeout=10) as response:
print(response.status)
Boş lüğət heç bir proksi marşrutu vermir. Xəritələməni ötürməsəniz, işləyici proksiləri mühit və platforma parametrlərindən aşkar edir. Bu iki quruluş fərqli siyasətləri ifadə edir.
Nümunə Python-un standart kitabxanasından istifadə edir və adi HTTPS yoxlamasını saxlayır. with bloku cavabı bağlayır; istisna səbəbindən blokdan çıxanda da belədir.
Eyni tətbiqdə birbaşa və proksi vasitəsilə sorğular
İki opener çağırışlar arasında mühit dəyişənlərini dəyişmədən iki siyasəti daşıya bilər:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
proxied = build_opener(ProxyHandler({
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}))
with proxied.open("https://example.com/", timeout=10) as response:
print(response.status)
Geri dövrə ünvanını öz HTTP proksinizlə əvəz edin və ya proksi ilə müqayisə üçün HTTP proksi siyahısından namizəd seçin. Xidmət icazə verirsə, HTTPS hədəfinə bağlantını CONNECT vasitəsilə daşıya bilər. Dinləyicinin protokolu və autentifikasiya dəstəyi işləyiciyə uyğun olmalıdır.
Standart opener-i dəyişməyin
direct.open və ya proxied.open çağırışını müvafiq marşruta cavabdeh obyekt vasitəsilə edin. install_opener urllib-in rahatlıq funksiyalarının istifadə etdiyi proses üzrə standartı dəyişir; onu işlədən kitabxana əlaqəsiz koda təsir edə bilər. Yuxarıdakı təcrid olunmuş opener üçün bu lazım deyil.
timeout arqumenti əməliyyat parametridir, hər ötürmənin bütün real keçən vaxtını məhdudlaşdıran son müddət deyil. Yalnız işin tələb etdiyi məlumatı oxuyun; ciddi ümumi vaxt büdcəsi varsa, daha yüksək səviyyəli son müddət tətbiq edin.
Bu opener obyektləri başqa kitabxananın müştərisini, mövcud prosesi və ya brauzerin proksi parametrlərini dəyişmir.