پروکسی دفتر یک حساب می‌خواهد. وب‌سایت پشت آن حساب دیگری می‌خواهد. Requests برای این دو ورود Basic ورودی‌های جداگانه دارد: اطلاعات ورود در نشانی پروکسی و آرگومان 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 را حفظ می‌کند و به جداکننده‌های نشانی تبدیل نمی‌کند.

کلید https در دیکشنری این مسیر را برای مقصد HTTPS انتخاب می‌کند. مقدار آن هنوز با http:// آغاز می‌شود، چون پروتکلی است که برای رسیدن به این پروکسی نمونه به کار می‌رود.

در آن درخواست HTTPS، ورود پروکسی به تبادل CONNECT تعلق دارد. ورود وب‌سایت به درخواست بعدی از طریق تونل برقرارشده تعلق دارد. اگر آداپتور مجوز پروکسی را از نشانی خودش استخراج کند، در همان گام مربوط می‌ماند؛ برای این حالت Basic به کلاس احراز هویت ترکیبی نیازی نیست.

کد 407 چالش واسطه را نشان می‌دهد. کد 401 از سوی وب‌سایت چالش مقصد را نشان می‌دهد. از آن پاسخ استفاده کنید تا تصمیم بگیرید کدام یک از دو حساب پیکربندی‌شده نیاز به بررسی دارد.

مقالات مرتبط