Python Requests: erilliset Basic-kirjautumiset välityspalvelimelle ja verkkosivustolle
Anna välityspalvelimen Basic-kirjautuminen sen URL:n kautta ja kohdesivuston Basic-kirjautuminen Requestsin auth-argumentin kautta.
Toimiston välityspalvelin pyytää yhtä tiliä. Sen takana oleva verkkosivusto pyytää toista. Requestsillä on erilliset syötteet näille kahdelle Basic-kirjautumiselle: tunnukset välityspalvelimen URL:ssa ja pyynnön auth-argumentti.
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()
Neljä tiliä kuvaavaa muuttujaa tulevat sovelluksen tunnusten määrityksestä. Välityspalvelimen käyttäjänimen ja salasanan koodaaminen erikseen säilyttää esimerkiksi at-merkin muuttamatta sitä URL:n erottimeksi.
Sanakirjan avain https valitsee tämän reitin HTTPS-kohteelle. Sen arvo alkaa yhä merkkijonolla http://, koska se on protokolla, jolla tähän esimerkkivälityspalvelimeen päästään.
Tässä HTTPS-pyynnössä välityspalvelimen kirjautuminen kuuluu CONNECT-vaihtoon. Sivuston kirjautuminen kuuluu myöhempään pyyntöön muodostetun tunnelin kautta. Kun adapteri johtaa välityspalvelimen valtuutuksen omasta URL:staan, se pysyy kyseisellä hypyllä; tähän Basic-tapaukseen ei tarvita yhdistettyä todentamisluokkaa.
407 ilmaisee välittäjän haasteen. Sivustolta tuleva 401 ilmaisee kohteen haasteen. Käytä tätä vastausta päättääksesi, kumpi kahdesta määritetystä tilistä tarvitsee huomiota.