مرر تعيينًا فارغًا إلى ProxyHandler عندما ينبغي لكائن opener واحد في urllib أن يتصل مباشرة:

from urllib.request import ProxyHandler, build_opener

direct = build_opener(ProxyHandler({}))

with direct.open("https://example.com/", timeout=10) as response:
    print(response.status)

لا يوفر القاموس الفارغ أي مسارات عبر الوكيل. أما إغفال التعيين فيسمح للمعالج باكتشاف الوكلاء من البيئة وإعدادات المنصة. تعبّر هاتان الطريقتان في الإنشاء عن سياستين مختلفتين.

يستخدم المثال مكتبة Python القياسية ويحافظ على التحقق المعتاد من HTTPS. تغلق كتلة with الاستجابة، بما في ذلك عند مغادرة الكتلة بسبب استثناء.

طلبات مباشرة وطلبات عبر وكيل في التطبيق نفسه

يمكن لكائني opener حمل السياستين دون تغيير متغيرات البيئة بين الاستدعاءات:

from urllib.request import ProxyHandler, build_opener

direct = build_opener(ProxyHandler({}))
proxied = build_opener(ProxyHandler({
    "http": "http://127.0.0.1:8080",
    "https": "http://127.0.0.1:8080",
}))

with proxied.open("https://example.com/", timeout=10) as response:
    print(response.status)

استبدل عنوان الاسترجاع المحلي بوكيل HTTP الخاص بك، أو اختر مرشحًا من قائمة وكلاء HTTP للمقارنة عبر وكيل. يمكنه نقل الاتصال إلى وجهة HTTPS عبر CONNECT عندما تسمح الخدمة. يجب أن يتوافق بروتوكول المستمع ودعمه للمصادقة مع المعالج.

اترك opener الافتراضي دون تغيير

استدعِ direct.open أو proxied.open عبر الكائن المسؤول عن المسار. يغير install_opener الإعداد الافتراضي على مستوى العملية الذي تستخدمه دوال urllib المختصرة؛ لذا قد تؤثر مكتبة تستخدمه في شيفرة غير مرتبطة بها. لا حاجة إليه لكائن opener المعزول أعلاه.

المعامل timeout إعداد لعملية، وليس مهلة زمنية فعلية تشمل كامل كل نقل. اقتصر في القراءة على البيانات اللازمة، واستخدم مهلة على مستوى أعلى إذا كان للعمل حد إجمالي صارم للوقت.

لا تغير كائنات opener هذه عميل مكتبة أخرى أو عملية قائمة أو إعدادات الوكيل في المتصفح.

مقالات ذات صلة