Python urllib: tgħaqqid tar-routing tal-proxy mal-Basic Authentication tal-website
Għaqqad ir-routing tal-urllib u l-Basic authentication tad-destinazzjoni f'opener espliċitu wieħed mingħajr ma tissostitwixxi l-opener globali darbtejn.
Li ssejjaħ install_opener() darbtejn ma jżidix it-tieni opener mal-ewwel wieħed. Dan jissostitwixxi l-opener default tal-module. Jekk oġġett wieħed jaf il-proxy u ieħor jaf id-dħul fil-website, ibni opener wieħed bl-handlers meħtieġa.
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()Il-proxy u d-destinazzjoni huma eżempji. Għal servizz pubbliku li jista' jintlaħaq permezz ta' proxy HTTP pubbliku, il-lista tal-proxy HTTP tipprovdi endpoints kandidati għall-handler tar-routing. Dan l-opener jgħaddi t-talba HTTPS mill-proxy HTTP u jimmaniġġja l-isfida Basic tad-destinazzjoni. Ma jikkonfigurax l-awtentikazzjoni tal-proxy.
Jekk il-proxy wkoll jeħtieġ dħul, agħżel b'mod separat arranġament ta' awtentikazzjoni tal-proxy appoġġjat. 407 fil-ħin tal-CONNECT iseħħ qabel id-destinazzjoni tkun tista' toħroġ l-isfida tagħha. Iż-żieda tal-kredenzjali tal-website mal-maniġer tal-passwords ma tistax tissodisfa dak l-iskambju preċedenti.
Is-sejħa diretta ta' opener.open() iżżomm il-konfigurazzjoni mal-operazzjoni. M'hemmx għalfejn tinbidel il-default tal-module kollu kemm hu, sakemm l-applikazzjoni ma tridx b'mod deliberat li s-sejħiet kollha konvenjenti jaqsmu dan l-opener.