Za izziv Basic s strani proxyja HTTP uporabite ProxyBasicAuthHandler. Ta običajni primer HTTP hrani pot in račun v enem openerju:

import os
from urllib.request import (
    ProxyHandler, ProxyBasicAuthHandler,
    HTTPPasswordMgrWithDefaultRealm, build_opener,
)

proxy_url = 'http://proxy.example:8080'
passwords = HTTPPasswordMgrWithDefaultRealm()
passwords.add_password(
    None, proxy_url,
    os.environ['PROXY_USER'], os.environ['PROXY_PASSWORD'],
)
opener = build_opener(
    ProxyHandler({'http': proxy_url}),
    ProxyBasicAuthHandler(passwords),
)
with opener.open('http://example.com/', timeout=10) as response:
    print(response.status)

Uporabite dejansko končno točko in račun, ki ga zagotovi upravljavec. Upravljalnik uporabi upravitelja gesel za izziv proxyja; uskladite predvideni URI in realm proxyja. Preverjanje pristnosti Basic na cilju uporabi drug upravljalnik.

Neposredni klic openerja ohrani to nastavitev lokalno. URL zahteve ostane spletno mesto, ne posrednik. Ta odprta pot HTTP ne šifrira izmenjave Basic.

Iz tega primera ne sklepajte na podporo tunela HTTPS. 407 med CONNECT se zgodi pri nastavitvi, pred običajnim odgovorom cilja; izbrana integracija mora tam obravnavati preverjanje pristnosti. Zamenjava upravljalnika prijave na spletnem mestu ne more popraviti tega prejšnjega izziva.

URL-ji proxyja s poverilnicami so druga oblika, ki se pojavlja v starejših primerih. Če jih uporabite, pravilno kodirajte ločila URL in nastali URL s skrivnostjo hranite zunaj dnevnikov.

Sorodni članki