Python Requests: oddelené Basic prihlásenia pre proxy a web
Prihlásenie Basic k proxy odovzdajte v URL proxy a prihlásenie k cieľovému webu v argumente auth v Requests.
Kancelárska proxy chce jeden účet. Web za ňou chce iný. Requests má pre tieto dve Basic prihlásenia oddelené vstupy: údaje v URL proxy a argument auth požiadavky.
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()
Štyri premenné účtu pochádzajú z konfigurácie prihlasovacích údajov aplikácie. Samostatné kódovanie používateľského mena a hesla proxy zachová znaky ako zavináč bez toho, aby ich zmenilo na oddeľovače URL.
Kľúč https v slovníku volí túto cestu pre cieľ HTTPS. Jeho hodnota stále začína na http://, pretože to je protokol použitý na dosiahnutie tejto ukážkovej proxy.
Pri tejto HTTPS požiadavke patrí prihlásenie k proxy výmene CONNECT. Prihlásenie k webu patrí až nasledujúcej požiadavke cez vytvorený tunel. Keď adaptér odvodí autorizáciu proxy z vlastnej URL, zostane na príslušnom skoku; pre tento prípad Basic nie je potrebná kombinovaná trieda overovania.
407 označuje výzvu sprostredkovateľa. 401 z webu označuje výzvu cieľa. Podľa tejto odpovede rozhodnite, ktorý z dvoch nakonfigurovaných účtov potrebuje pozornosť.