urllib3 ProxyManager: إرسال بيانات Basic في proxy_headers
قدّم بيانات اعتماد Basic للوكيل عبر ProxyManager.proxy_headers كي تتوفر أثناء HTTPS CONNECT دون أن تصبح ترويسات وجهة.
يملك ProxyManager وسيطًا منفصلًا اسمه proxy_headers للترويسات المرسلة إلى الوسيط. لوكيل يقبل مصادقة Basic:
import urllib3
proxy_headers = urllib3.make_headers(
proxy_basic_auth=f'{proxy_user}:{proxy_password}'
)
with urllib3.ProxyManager(
'http://proxy.example:8080',
proxy_headers=proxy_headers,
timeout=urllib3.Timeout(connect=5, read=10),
) as http:
response = http.request('GET', 'https://service.example/data')
print(response.status)
بالنسبة إلى وجهة HTTP عادية تنتقل هذه الترويسات مع الطلب المحوَّل إلى الوكيل. أما وجهة HTTPS التي تستخدم CONNECT فهي تنتمي إلى إعداد النفق لا إلى كل طلب موقع مشفَّر.
الوسيط العادي headers يصف ترويسات طلب الوجهة. وهذه مصادقة الوكيل تخص مستلمًا آخر. ووضع حساب الوكيل هناك لا يعادل ضبط تبادل CONNECT السابق.
يبني make_headers قيمة ترويسة Basic. وهو لا يتفاوض على NTLM ولا يختار مخططًا مدعومًا تلقائيًا ولا يثبت أن الوكيل يقبل ذلك الحساب.
الوكيل الذي يملك مستمع TLS يضيف سياق TLS خاصًا بالوكيل. ونقطة النهاية http:// أعلاه تصف عمدًا مستمع HTTP عاديًا ينقل وجهة HTTPS عبر نفق.