Python Requests: atskiri Basic prisijungimai tarpiniam serveriui ir svetainei
Perduokite tarpinio serverio Basic prisijungimą per jo URL, o paskirties svetainės Basic prisijungimą per Requests auth argumentą.
Biuro tarpinis serveris prašo vienos paskyros. Už jo esanti svetainė prašo kitos. Requests turi atskirus įvesties laukus šiems dviem Basic prisijungimams: prisijungimo duomenis tarpinio serverio URL ir užklausos 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()
Keturi paskyros kintamieji ateina iš programos prisijungimo duomenų konfigūracijos. Atskiras tarpinio serverio vartotojo vardo ir slaptažodžio kodavimas išsaugo tokius simbolius kaip at ženklas, nepaverdamas jų URL skyrikliais.
Žodyno raktas https pasirenka šį kelią HTTPS paskirties serveriui. Jo reikšmė vis dar prasideda http://, nes tai yra protokolas, kuriuo pasiekiamas šis pavyzdinis tarpinis serveris.
Šioje HTTPS užklausoje tarpinio serverio prisijungimas priklauso CONNECT mainams. Svetainės prisijungimas priklauso vėlesnei užklausai per sukurtą tunelį. Kai adapteris tarpinio serverio autorizaciją išveda iš savo paties URL, ji lieka atitinkamame šuolyje; šiam Basic atvejui nereikia jungtinės autentifikavimo klasės.
407 nurodo tarpininko iššūkį. 401 iš svetainės nurodo paskirties iššūkį. Naudokitės šiuo atsakymu, kad nuspręstumėte, kuri iš dviejų sukonfigūruotų paskyrų reikalauja dėmesio.