لقد قمت ببناء منصة النفق الخاصة بي

قضيت ثلاثة أيام في صقل تطبيق ويب على حاسوبي المحمول. بدا مثالياً. ثم حاولت اختباره على هاتفي. انهار كل شيء.

تصبح عملية التطوير المحلي فوضوية عندما تحتاج إلى جهاز ثانٍ. فمشاركة عنوان IP محلي تفشل بسبب جدران الحماية ومشكلات شهادات HTTPS.

جربت Ngrok. إنه يعمل، لكن الفئة المجانية تقطع الاتصالات. كما أن الروابط تبدو سيئة للغاية؛ فالسلاسل العشوائية مثل a1b2-34-56.ngrok-free.app غير مناسبة للمشاركة مع العملاء أو الفرق.

أردت نفقاً بروابط نظيفة وسهلة القراءة. لذا قمت ببناء نفق خاص بي.

لقد دمجت نفقاً مخصصاً مع أداة لاختصار الروابط. وأضفت الذكاء الاصطناعي لإنشاء روابط (slugs) ذكية، ودمجت حمايات أمنية.

المجموعة التقنية المستخدمة: • النفق / البروكسي: Django Channels, Daphne, WebSockets, Python & Node.js CLI • الواجهة الأمامية: Next.js, TailwindCSS, Shadcn/UI • الواجهة الخلفية: Django 5, Graphene GraphQL • قاعدة البيانات: PostgreSQL (Neon) • المصادقة: JWT, bcrypt • الذكاء الاصطناعي: Google Gemini • الأمن: MaxMind GeoLite2, Google Safe Browsing API

آلية العمل:

  • نفق WebSocket ثنائي الاتجاه. يتصل وكيل CLI محلي بخادم Django لتوجيه طلبات HTTP.
  • الحماية من حالات التسابق (Race-condition). أستخدم تعبيرات Django F() لإجراء تحديثات ذرية (atomic updates) للحفاظ على دقة التحليلات.
  • القياس عن بُعد غير المعطل (Non-blocking telemetry). تعمل عمليات البحث عن الموقع ونظام التشغيل في خيوط خلفية (background threads) للحفاظ على انخفاض زمن الاستجابة.
  • روابط (slugs) مدعومة بالذكاء الاصطناعي. يقرأ Gemini الرابط المستهدف لإنشاء رابط ذي معنى بدلاً من نص عشوائي.
  • أمن استباقي. أقوم بحظر نطاقات IP الخاصة وأجري فحوصات Google Safe Browsing قبل حفظ أي رابط.

المنطق الخاص بالواجهة الخلفية والنفق مستقر. أما الواجهة الأمامية فلا تزال قيد التطوير.

أنا حالياً أدرس للامتحانات في IITM. لقد أوقفت إضافة الميزات الجديدة للتركيز على دراستي. وبدلاً من ترك الكود دون عمل، قمت بفتحه للمراجعة.

أحتاج إلى ملاحظاتكم حول بعض الأمور:

  • زمن الاستجابة (Latency): كيف يمكنني إبقاء عمليات إعادة التوجيه أقل من 10 مللي ثانية عند النطاقات الواسعة؟
  • الأمن: ما هي أفضل طريقة لتعزيز التخفيف من هجمات SSRF؟
  • القابلية للتوسع (Scalability): هل يجب أن أستخدم WebSockets أم TCP للأنفاق طويلة الأمد؟
  • قابلية المراقبة (Observability): ما هي المقاييس التي يجب أن أتتبعها لصحة النفق؟

إذا كانت لديك خبرة في عمال البروكسي (proxy workers) أو تصميم الأنظمة، يرجى مشاركة أفكارك.

تفصيل كامل لتصميم النظام: [Link] قاعدة الكود: [Link]

كيف تتعاملون مع اختبار أذونات الهاتف المحمول أثناء التطوير المحلي؟ هل تستخدمون أنفاقاً من طرف ثالث أم أدوات مخصصة؟

المصدر: https://dev.to/zallu/my-ngrok-urls-got-so-ugly-i-built-my-own-tunneling-platform-instead-59d