Python urllib: základné overovanie proxy pre HTTP požiadavky
Zostavte explicitný urllib opener pre výzvu Basic od HTTP proxy a odlíšte túto bežnú HTTP výmenu od overovania HTTPS CONNECT.
Pre výzvu Basic od HTTP proxy použite ProxyBasicAuthHandler. Tento bežný HTTP príklad drží trasu aj účet v jednom openeri:
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)Použite skutočný koncový bod a účet poskytnutý operátorom. Obsluha používa správcu hesiel pre výzvu proxy; zlaďte zamýšľané proxy URI a realm. Overovanie Basic na cieli používa inú obsluhu.
Priame volanie openera drží toto nastavenie lokálne. URL požiadavky zostáva web, nie sprostredkovateľ. Táto otvorená HTTP trasa nešifruje výmenu Basic.
Z tohto príkladu nevyvodzujte podporu tunela HTTPS. 407 počas CONNECT nastáva pri zostavovaní, pred bežnou odpoveďou cieľa; zvolená integrácia tam musí ošetriť overovanie. Zmena prihlasovacej obsluhy webu tú skoršiu výzvu neopraví.
Proxy URL s prihlasovacími údajmi sú iný formát, ktorý sa vyskytuje v starších príkladoch. Ak ich použijete, správne zakódujte oddeľovače URL a výslednú URL s tajomstvom držte mimo záznamov.