Python Requests: eraldi Basic-sisselogimised puhverserverile ja veebisaidile
Edasta puhverserveri Basic-sisselogimine selle URL-i kaudu ja sihtkoha Basic-sisselogimine Requestsi auth-argumendi kaudu.
Kontori puhverserver küsib ühte kontot. Selle taga olev veebisait küsib teist. Requestsil on nende kahe Basic-sisselogimise jaoks eraldi sisendid: volitused puhverserveri URL-is ja päringu auth-argument.
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()
Neli konto muutujat pärinevad rakenduse volituste konfiguratsioonist. Puhverserveri kasutajanime ja parooli eraldi kodeerimine säilitab sellised märgid nagu at-märk, muutmata neid URL-i eraldajateks.
https võtmesõna sõnastikus valib selle tee HTTPS-sihtkoha jaoks. Selle väärtus algab endiselt http://-ga, sest see on protokoll, millega selle näidispuhverserverini jõutakse.
Selle HTTPS-päringu puhul kuulub puhverserveri sisselogimine CONNECT-vahetuse juurde. Veebisaidi sisselogimine kuulub hilisema päringu juurde loodud tunnelis. Kui adapter tuletab puhverserveri volituse oma URL-ist, jääb see asjakohasesse hüppesse; selle Basic-juhtumi jaoks pole kombineeritud autentimisklassi vaja.
407 tähistab vahendaja väljakutset. Veebisaidilt tulev 401 tähistab sihtkoha väljakutset. Kasuta seda vastust, et otsustada, milline kahest seadistatud kontost vajab tähelepanu.