Python urllib: צוזאמענשטעלן proxy רוטינג מיט Basic Authentication פון דער וועבזייטל
צוזאמענשטעל urllib רוטינג און Basic authentication פונעם ציל אין איין עקספליציט opener, אן ערזעצן דעם גלאבאלן opener צוויי מאל.
install_opener() צוויי מאל לייגט נישט צו דעם צווייטן opener צום ערשטן. עס ערזעצט דעם module ס default opener. אויב איין אביעקט קען דעם proxy און אן אנדער דעם אריינקומען צו דער וועבזייטל, בויט איין opener מיט די נייטיקע handlers.
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 און דער ציל זענען ביישפילן. פאר א פובליקן דינסט וואס מען קען דערגרייכן דורך א פובליקן HTTP proxy, גיט די HTTP proxy ליסטע קאנדידאט endpoints פאר דעם routing handler. דער opener פירט דעם HTTPS בקשה דורך דעם HTTP proxy און באהאנדלט דעם Basic אויסרופן פונעם ציל. ער קאנפיגורירט נישט proxy אויטענטיקאציע.
אויב דער proxy דארף אויך אריינלאגן, קלויבט אן אונטערשטיצטע proxy-אויטענטיקאציע באזונדער. א 407 ביי CONNECT פאסירט איידער דער ציל קען ארויסגעבן זיין אייגענעם אויסרופן. צולייגן די וועבזייטל באַשטעטיקונגען צום פאסווארט פארוואלטער קען נישט באפרידיקן יענעם פריערדיקן אויסטויש.
opener.open() דירעקט האלט די קאנפיגוראציע מיט דער אפעראציע. מען דארף נישט ענדערן דעם module-ברייטער default אחוץ אויב די אפליקאציע וויל במזיד אז אלע באקוועמע רופן זאלן מיטטיילן דעם opener.