Python Requests: بيانات دخول Basic منفصلة للوكيل والموقع
مرّر بيانات دخول Basic الخاصة بالوكيل عبر عنوان URL الخاص به، وبيانات دخول الموقع الوجهة عبر وسيط auth في Requests.
وكيل المكتب يطلب حسابًا واحدًا. والموقع خلفه يطلب حسابًا آخر. لدى Requests مدخلان منفصلان لبيانات الدخول هذه: بيانات الاعتماد داخل عنوان 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 من الموقع يحدد تحدّي الوجهة. استخدم ذلك الرد لتقرر أي الحسابين المُهيأين يحتاج إلى معالجة.