At kalla install_opener() tvær ferðir leggur ikki annan opener til tann fyrsta. Tað skiftir út standard-opener modulsins. Um ein lutur kennir proxyina og ein annar kennir innriting á heimasíðuna, bygg eina opener við neyðugu handlerunum.

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()

Proxyin og málið eru dømi. Fyri eina almenna tænastu, sum er atkomulig gjøgnum eina almenna HTTP-proxy, veitir HTTP-proxy listin møgulig endpoints fyri routing-handlerin. Hendan openerin sendir HTTPS-fyrispurningin gjøgnum HTTP-proxyina og viðgerðir Basic-avbjóðing málsins. Hon stillir ikki proxy-autentisering.

Um proxyin eisini krevur innriting, vel eina stuðlaða proxy-autentiseringsskipan sær. 407 við CONNECT kemur fram, áðrenn málið kann geva sína egnu avbjóðing. At leggja innritingarupplýsingar heimasíðunnar í loynnorða-stýrið kann ikki nøgda ta fyrrverandi umbýtið.

At kalla opener.open() beinleiðis heldur stillingini saman við gerðini. Tað er ikki neyðugt at broyta module-wide standardin, uttan so at applikatiónin viljandi vil, at allar convenience-kall skulu deila hesa openerina.

Skyldar greinar