Офісны проксі патрабуе адзін уліковы запіс. Сайт за ім патрабуе іншы. У Requests ёсць асобныя ўваходы для гэтых двух Basic-лагінаў: дадзеныя ўліковага запісу ў URL проксі і аргумент auth запыту.

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()

Чатыры зменныя ўліковага запісу бяруцца з канфігурацыі дадзеных уліковага запісу праграмы. Асобнае кадаванне імені і пароля проксі захоўвае такія сімвалы, як знак at, не ператвараючы іх у раздзяляльнікі URL.

Ключ https у слоўніку выбірае гэты шлях для HTTPS-прызначэння. Яго значэнне ўсё яшчэ пачынаецца з http://, бо гэта пратакол, які выкарыстоўваецца для доступу да гэтага прыкладу проксі.

Для гэтага HTTPS-запыту логін проксі адносіцца да абмену CONNECT. Логін сайта адносіцца да наступнага запыту праз усталяваны тунель. Калі адаптар выводзіць аўтарызацыю проксі з уласнага URL, яна застаецца на патрэбным кроку; для гэтага выпадку Basic не патрэбны аб'яднаны клас аўтэнтыфікацыі.

407 пазначае выклік пасрэдніка. 401 ад сайта пазначае выклік прызначэння. Выкарыстайце гэты адказ, каб вырашыць, які з двух наладжаных уліковых запісаў патрабуе ўвагі.

Падобныя артыкулы