Python Requests: ločene prijave Basic za proxy in spletno mesto
Prijavo Basic za proxy posredujte prek njegovega URL, prijavo za ciljno spletno mesto pa prek argumenta auth v Requests.
Pisarniški proxy zahteva en račun. Spletno mesto za njim zahteva drugega. Requests ima ločene vnose za ti dve prijavi Basic: poverilnice v URL-ju proxyja in argument auth zahteve.
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()
Štiri spremenljivke računa izhajajo iz konfiguracije poverilnic aplikacije. Ločeno kodiranje uporabniškega imena in gesla proxyja ohrani znake, kot je znak at, ne da bi jih spremenilo v ločila URL.
Ključ https v slovarju izbere to pot za cilj HTTPS. Njegova vrednost se še vedno začne z http://, ker je to protokol, s katerim dosežemo ta primer proxyja.
Pri tej zahtevi HTTPS pripada prijava proxyja izmenjavi CONNECT. Prijava spletnega mesta pripada poznejši zahtevi skozi vzpostavljeni tunel. Ko adapter izpelje avtorizacijo proxyja iz lastnega URL-ja, ta ostane na ustreznem skoku; za ta primer Basic kombinirani razred preverjanja ni potreben.
407 označuje izziv posrednika. 401 s spletnega mesta označuje izziv cilja. Uporabite ta odgovor, da se odločite, kateri od dveh konfiguriranih računov potrebuje pozornost.