Python urllib: مصادقة الوكيل الأساسية لطلبات HTTP
أنشئ فاتح urllib صريحًا لتحد Basic من وكيل HTTP، وميّز هذا التبادل العادي عبر HTTP عن مصادقة HTTPS CONNECT.
للتحدي Basic القادم من وكيل HTTP استخدم ProxyBasicAuthHandler. يحفظ هذا المثال العادي عبر HTTP المسار والحساب في فاتح واحد:
import os
from urllib.request import (
ProxyHandler, ProxyBasicAuthHandler,
HTTPPasswordMgrWithDefaultRealm, build_opener,
)
proxy_url = 'http://proxy.example:8080'
passwords = HTTPPasswordMgrWithDefaultRealm()
passwords.add_password(
None, proxy_url,
os.environ['PROXY_USER'], os.environ['PROXY_PASSWORD'],
)
opener = build_opener(
ProxyHandler({'http': proxy_url}),
ProxyBasicAuthHandler(passwords),
)
with opener.open('http://example.com/', timeout=10) as response:
print(response.status)استخدم نقطة النهاية الحقيقية والحساب الذي يوفره المشغّل. يستخدم المعالج مدير كلمات المرور لتحدي الوكيل؛ طابق معرّف URI الخاص بالوكيل والنطاق المقصودين. أما مصادقة Basic عند الوجهة فتستخدم معالجًا آخر.
استدعاء الفاتح مباشرةً يبقي هذا الإعداد محليًا. يبقى عنوان URL للطلب هو الموقع، لا الوسيط. هذا المسار الصريح عبر HTTP لا يشفّر تبادل Basic.
لا تستنتج من هذا المثال دعم نفق HTTPS. يحدث خطأ 407 أثناء CONNECT في مرحلة الإعداد، قبل أي استجابة عادية من الوجهة؛ ويجب أن يتولى التكامل المختار المصادقة هناك. تغيير معالج تسجيل الدخول في الموقع لا يصلح ذلك التحدي الأسبق.
عناوين URL للوكيل الحاملة لبيانات الاعتماد صيغة أخرى تظهر في أمثلة أقدم. إذا استخدمتها، فشفّر فواصل URL بشكل صحيح وأبعد عنوان URL الناتج الحاوي على سر عن السجلات.