عنوان IP ومنفذ الوكيل: ما التنسيق الذي يحتاجه تطبيقك؟
حوّل مدخل قائمة الوكلاء إلى عنوان HTTP أو SOCKS، وتعامل مع حقول المضيف والمنفذ المنفصلة ونسّق عناوين IPv6 بشكل صحيح.
تطلب بعض التطبيقات IP:port. وتحتاج أخرى إلى عنوان URL يبدأ بـ http:// أو socks5://. وغالبًا ما تفصل إعدادات المتصفح العنوان والمنفذ في حقلين. لذا قد تظهر نقطة النهاية نفسها بتنسيقات متعددة دون تغيير عنوانها.
مدخل IPv4
لنفترض أن قائمة وكلاء HTTP تعطيك وكيل HTTP التوضيحي 203.0.113.10:8080.
| ما يطلبه التطبيق | ما تُدخله |
|---|---|
| المضيف أو IP | 203.0.113.10 |
| المنفذ | 8080 |
| عنوان URL لوكيل HTTP | http://203.0.113.10:8080 |
لا تُدرج المنفذ مرتين. إذا كان للتطبيق حقل منفذ مستقل، فقد يؤدي وضع 203.0.113.10:8080 في حقل المضيف إلى محاولة حل السلسلة كلها بوصفها اسم مضيف. وبالمثل، لا تضف مخططًا إلى حقل يطلب صراحة عنوان IP فقط.
يجب أن يطابق المخطط الخدمة. اختر HTTP أو SOCKS5 وفق دعم العميل قبل تحويل العنوان. فكتابة socks5:// أمام نقطة نهاية HTTP تغيّر ما يرسله العميل؛ ولا تفعّل SOCKS5 على ذلك الخادم.
يحتاج IPv6 إلى أقواس مربعة داخل URL
يحتوي عنوان IPv6 أصلًا على نقطتين رأسيتين، لذلك يحيط URL العنوان بأقواس مربعة قبل إضافة المنفذ:
http://[2001:db8::10]:8080
socks5://[2001:db8::10]:1080
من دون الأقواس يصبح الحد بين العنوان والمنفذ ملتبسًا. عادة يطلب التطبيق ذو الحقول المنفصلة 2001:db8::10 للمضيف و8080 للمنفذ؛ اتبع تنسيق إدخاله. العنوانان المستخدمان هنا أمثلة توثيقية وليسا وكيلين عاملين.
حلّل عناوين URL بدل التقسيم عند كل نقطتين رأسيتين
يمكن لبرنامج Python صغير معالجة عناوين IPv4 وIPv6 المحاطة بأقواس باستخدام محلّل URL القياسي:
from urllib.parse import urlsplit
proxy = urlsplit("http://[2001:db8::10]:8080")
print(proxy.scheme)
print(proxy.hostname)
print(proxy.port)
تعيد الخاصية hostname العنوان بلا أقواس. وتقسيم السلسلة الأصلية عند كل نقطتين رأسيتين يفسد هذا المثال. وفي أداة استيراد فعلية، ارفض أيضًا غياب المضيف والمخططات غير المدعومة والمنافذ خارج 1–65535. تحليل URL يعطيك مكوناته، ولا يثبت وجود الخدمة.
عندما تتضمن القائمة اسم مستخدم وكلمة مرور
من تنسيقات URL الشائعة http://username:password@host:port. تحتاج رموز مثل @ و# و/ داخل بيانات الاعتماد إلى ترميز URL صحيح. وإذا وفّر العميل حقول اعتماد منفصلة، فعادة يكون استخدامها أسهل من تركيب URL يدويًا.
تحقق من تنسيق المزوّد الأصلي قبل تحويل سلسلة اعتماد مفصولة بنقطتين رأسيتين. لا يوجد معنى موحد لأربعة حقول مفصولة بهذه الطريقة، وقد تحتوي كلمة المرور نفسها على نقطتين رأسيتين. لا ينبغي لمحلّل صُمم لأسطر IP:port البسيطة أن يخمّن بصمت كيفية معالجة تنسيق مختلف.