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.

Související články