Գրասենյակի վստահված անձը պահանջում է մեկ հաշիվ։ Նրա հետևում գտնվող կայքը պահանջում է մեկ այլ հաշիվ։ 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-ը նշում է նպատակակետի մարտահրավերը։ Օգտագործեք այդ պատասխանը՝ որոշելու, թե կազմաձևված երկու հաշիվներից որին է ուշադրություն պետք։

Առնչվող հոդվածներ