Python urllib: proxy yönlendirmesini web sitesi Basic Authentication ile birleştirme
Global opener'ı iki kez değiştirmeden urllib yönlendirmesini ve hedefin Basic authentication'ını tek bir açık opener'da birleştirin.
İki kez install_opener() çağırmak, ikinci opener'ı birinciye eklemez. Modülün varsayılan opener'ını değiştirir. Bir nesne proxy'yi, bir diğeri web sitesi oturum açmasını biliyorsa, gerekli handler'ları içeren tek bir opener oluşturun.
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()Proxy ve hedef örneklerdir. Genel bir HTTP proxy üzerinden erişilebilen genel bir hizmet için HTTP proxy listesi, yönlendirme handler'ı için aday endpoint'ler sunar. Bu opener, HTTPS isteğini HTTP proxy üzerinden yönlendirir ve hedefin Basic meydan okumasını ele alır. Proxy kimlik doğrulamasını yapılandırmaz.
Proxy de oturum açma gerektiriyorsa, desteklenen bir proxy kimlik doğrulama düzenini ayrıca seçin. CONNECT sırasındaki 407, hedef kendi meydan okumasını yayınlayamadan önce oluşur. Web sitesi kimlik bilgilerini parola yöneticisine eklemek o daha erken takası karşılayamaz.
Doğrudan opener.open() çağrısı yapmak yapılandırmayı işlemle birlikte tutar. Uygulama tüm kolaylık çağrılarının bu opener'ı paylaşmasını bilinçli olarak istemediği sürece modül genelindeki varsayılanı değiştirmeye gerek yoktur.