Python Requests: osobne loginy Basic dla proxy i strony
Przekaż login Basic proxy przez jego URL, a login Basic strony docelowej przez argument auth w Requests.
Proxy biurowe wymaga jednego konta. Strona za nim wymaga innego. Requests ma osobne wejścia dla tych dwóch loginów Basic: dane logowania w URL proxy i argument auth żądania.
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()
Cztery zmienne konta pochodzą z konfiguracji danych logowania aplikacji. Osobne kodowanie nazwy użytkownika i hasła proxy zachowuje znaki takie jak małpa bez zamieniania ich w separatory URL.
Klucz https w słowniku wybiera tę trasę dla celu HTTPS. Jego wartość nadal zaczyna się od http://, ponieważ jest to protokół używany do dotarcia do tego przykładowego proxy.
W tym żądaniu HTTPS login proxy należy do wymiany CONNECT. Login strony należy do późniejszego żądania przez ustanowiony tunel. Gdy adapter wyprowadza autoryzację proxy z własnego URL, pozostaje ona na właściwym przeskoku; w tym przypadku Basic nie jest potrzebna połączona klasa uwierzytelniania.
407 wskazuje wyzwanie pośrednika. 401 ze strony wskazuje wyzwanie celu. Użyj tej odpowiedzi, aby zdecydować, które z dwóch skonfigurowanych kont wymaga uwagi.