Python urllib: základní ověřování proxy pro HTTP požadavky
Sestavte explicitní urllib opener pro výzvu Basic od HTTP proxy a odlište tuto běžnou HTTP výměnu od ověřování HTTPS CONNECT.
Pro výzvu Basic od HTTP proxy použijte ProxyBasicAuthHandler. Tento běžný HTTP příklad drží trasu i účet v jednom openeru:
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žijte skutečný koncový bod a účet poskytnutý operátorem. Obsluha používá správce hesel pro výzvu proxy; sladťte zamýšlené proxy URI a realm. Ověřování Basic na cíli používá jinou obsluhu.
Přímé volání openeru udržuje toto nastavení lokální. URL požadavku zůstává web, nikoli prostředník. Tato otevřená HTTP trasa nešifruje výměnu Basic.
Z tohoto příkladu nevyvozujte podporu tunelu HTTPS. 407 během CONNECT nastává při sestavování, před běžnou odpovědí cíle; zvolená integrace tam musí ověřování ošetřit. Změna přihlašovací obsluhy webu tu dřívější výzvu neopraví.
Proxy URL s přihlašovacími údaji jsou jiný formát, který se objevuje ve starších příkladech. Pokud je použijete, správně zakódujte oddělovače URL a výslednou URL s tajemstvím držte mimo záznamy.