Python Requests: oddělená Basic přihlášení pro proxy a web
Přihlášení Basic k proxy předejte v URL proxy a přihlášení Basic k cílovému webu v argumentu auth u Requests.
Kancelářská proxy chce jeden účet. Web za ní chce jiný. Requests má pro tato dvě Basic přihlášení oddělené vstupy: údaje v URL proxy a argument auth požadavku.
from urllib.parse import quote
import requests
proxy_url = (
f"http://{quote(proxy_user, safe='')}:"
f"{quote(proxy_password, safe='')}@proxy.example:8080"
)
response = requests.get(
"https://reports.example/private/",
proxies={"https": proxy_url},
auth=(site_user, site_password),
timeout=(5, 20),
)
response.raise_for_status()
Čtyři proměnné účtu pocházejí z konfigurace přihlašovacích údajů aplikace. Samostatné kódování uživatelského jména a hesla proxy zachová znaky jako zavináč, aniž by je změnilo na oddělovače URL.
Klíč https ve slovníku volí tuto cestu pro cíl HTTPS. Jeho hodnota stále začíná na http://, protože to je protokol použitý k dosažení této ukázkové proxy.
U tohoto HTTPS požadavku patří přihlášení k proxy výměně CONNECT. Přihlášení k webu patří až následnému požadavku přes navázaný tunel. Když adaptér odvodí autorizaci proxy z vlastní URL, zůstane na příslušném skoku; pro tento případ Basic není potřeba kombinovaná třída ověřování.
407 označuje výzvu prostředníka. 401 z webu označuje výzvu cíle. Podle této odpovědi rozhodněte, který ze dvou nakonfigurovaných účtů potřebuje pozornost.