Python urllib: Proksi marşrutlaşdırmasını sayt Basic Authentication ilə birləşdirin
Global opener-i iki dəfə əvəz etmədən urllib marşrutlaşdırmasını və hədəf Basic authentication-ı bir açıq opener-də birləşdirin.
install_opener() iki dəfə çağırmaq ikinci opener-i birinciyə əlavə etmir. O, modulun default opener-ini əvəz edir. Əgər bir obyekt proksini, digəri sayt girişini bilirsə, tələb olunan handler-ləri olan tək opener qurun.
import os
from urllib.request import (ProxyHandler, HTTPBasicAuthHandler,
HTTPPasswordMgrWithDefaultRealm, build_opener)
passwords = HTTPPasswordMgrWithDefaultRealm()
passwords.add_password(None, 'https://example.com/private/',
os.environ['SITE_USER'], os.environ['SITE_PASSWORD'])
opener = build_opener(
ProxyHandler({'https': 'http://203.0.113.10:8080'}),
HTTPBasicAuthHandler(passwords),
)
with opener.open('https://example.com/private/report', timeout=10) as response:
body = response.read()Proksi və hədəf nümunədir. Ümumi HTTP proksisi ilə əldə edilə bilən ümumi xidmət üçün HTTP proksi siyahısı marşrutlama handler-i üçün namizəd endpoint-lər verir. Bu opener HTTPS sorğusunu HTTP proksisindən keçirir və hədəfin Basic çağırışını həll edir. O, proksi autentifikasiyasını konfiqurasiya etmir.
Proksi də giriş tələb edirsə, dəstəklənən proksi-autentifikasiya qaydasını ayrıca seçin. CONNECT zamanı 407 hədəf öz çağırışını verə bilməzdən əvvəl baş verir. Sayt kredensiallarını parol menecerinə əlavə etmək o erkən mübadiləni təmin edə bilməz.
opener.open() birbaşa çağırmaq konfiqurasiyanı əməliyyatla saxlayır. Tətbiq bütün rahat çağırışların bu opener-i paylaşmasını qəsdən istəmirsə, modul səviyyəsində default-u dəyişməyə ehtiyac yoxdur.