Python urllib: proxy-routing kombinearje mei Basic Authentication fan de webside
Kombinearje urllib-routing en Basic-autentikaasje fan de bestimming yn ien eksplisite opener sûnder de globale opener twa kear te ferfangen.
It twa kear oanroppen fan install_opener() foeget de twadde opener net ta oan de earste. It ferfangt de standert-opener fan de module. As ien objekt de proxy ken en in oar de webside-oanmelding, bou dan ien opener mei de nedige 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()De proxy en de bestimming binne foarbylden. Foar in publike tsjinst dy't berikber is fia in publike HTTP-proxy, jout de HTTP-proxylist kandidaat-einpunten foar de routing-handler. Dizze opener rûnet it HTTPS-fersyk troch de HTTP-proxy en behannelet de Basic-útdaging fan de bestimming. It konfigurearret gjin proxy-autentikaasje.
As de proxy ek in oanmelding freget, kies dan apart in stipe proxy-autentikaasje-opsje. In 407 by CONNECT bart foardat de bestimming syn eigen útdaging útjaan kin. It tafoegjen fan webside-credentials oan de wachtwurdbehearder kin dy eardere útwikseling net foldwaan.
It direkte oanroppen fan opener.open() hâldt de konfiguraasje by de operaasje. Der is gjin needsaak om de module-brede standert te feroarjen, útsein as de applikaasje bewust wol dat alle gemaksoproppen dizze opener diele.