لا يتفاوض مقبس Python الخام على وكيل لمجرد وجود http_proxy. وبالنسبة إلى تطبيق يتحدث بروتوكول TCP الخاص به، استخدم موصلا يفهم الخدمة عند نقطة نهاية الوكيل.

مع توفر PySocks مسبقا، أنشئ الاتصال صراحة:

import socks

with socks.socksocket() as connection:
    connection.set_proxy(socks.SOCKS5, '203.0.113.10', 1080)
    connection.settimeout(10)
    connection.connect(('example.com', 12345))
    # Exchange the destination protocol here.

استبدل عنوان الوثائق ومنفذ الوجهة. ولوجهة عامة مسموح بها، اختر مرشحا من قائمة وكلاء SOCKS5 فقط بعد التحقق من أنه يسمح بمنفذ التطبيق المستهدف. تحقق من الحزمة المثبتة والطرق المدعومة ومتطلبات نقطة النهاية مقابل واجهة PySocks.

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

يحتاج مستمع SOCKS إلى تفاوض SOCKS. وتحتاج خدمة HTTP إلى موصل يدعم CONNECT لوجهة TCP عشوائية، وقد ترفض منفذها. اختر الموصل من الخدمة المعروضة فعلا، بدلا من تغيير عنوان مع ترك المصافحة الخاطئة.

أبق الاستبدال محليا. إن إسناد صنف إلى socket.socket قد يؤثر على عمليات استيراد ومكتبات غير ذات صلة. وإذا كانت مكتبة أخرى تملك إنشاء المقبس، فاستخدم مصنع الاتصال أو خيار الوكيل الموثق لديها؛ فقاموس لا تقرأه أبدا لا يمكنه تغيير ذلك الاتصال.

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