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.

Powiązane artykuły