يستطيع بروكسي HTTP قراءة طلبات HTTP العادية وتوجيهها. لكن ماذا عن حركة HTTPS المشفّرة؟ كيف سيوجّهها ما دام لا يستطيع قراءة المحتوى؟ الجواب هو CONNECT الطريقة: وهي الأسلوب المعياري لقول «افتح نفق TCP خامًا إلى هذا العنوان ثم لا تتدخل» للبروكسي.
كيف يُنشأ النفق؟
بعد استجابة 200 يتحول البروكسي إلى «أنبوب»: ينقل البايتات الواردة كما هي إلى الطرف الآخر، ولا ينظر في المحتوى إطلاقًا.
استجابة CONNECT 200 Connection established بمجرد أن تصبح كذلك يتوقف البروكسي عن التحدث بـ HTTP. والبايتات التالية هي تبادل TLS ولا يستطيع البروكسي تفسيرها — بل ينقلها فقط.
ماذا يرى البروكسي في نفق CONNECT؟
أي أن HTTPS يخفي ما تفعله لكنه لا يخفي إلى أين تذهب . وهذا التمييز بالغ الأهمية عند تقييم خصوصية البروكسي.
وقد تناولنا موضوع تسريب البيانات الوصفية والسجلات مقالنا عن سجلات اللوغ بالتفصيل.
الفرق بين CONNECT وAbsolute-URI
في HTTP العادي يُرسَل إلى البروكسي شكل طلب مختلف. ويجب عدم الخلط بينهما:
| HTTP العادي (absolute-URI) | HTTPS (CONNECT) | |
|---|---|---|
| سطر الطلب | GET http://site/yol HTTP/1.1 | CONNECT site:443 HTTP/1.1 |
| هل يرى البروكسي المحتوى | نعم، بالكامل | لا |
| هل يمكنه إضافة ترويسة | نعم | لا |
| هل يمكنه التخزين المؤقت | نعم | لا |
| لكل طلب | سطر طلب جديد | نفق واحد، طلبات متعددة |
لهذا السبب ترويسات مثل X-Forwarded-For لا يمكن إضافتها إلا في حركة HTTP العادية؛ أما في HTTPS فلا يستطيع البروكسي المساس بالترويسة.
لماذا يُقيَّد CONNECT؟
إن CONNECT هو صلاحية أن تقول للبروكسي «افتح اتصال TCP خامًا إلى أي عنوان». وإن لم يُقيَّد تحوّل البروكسي إلى مُرحِّل مفتوح. ولهذا تحدّ معظم إعدادات البروكسي من CONNECT بحيث تسمح به لمنافذ محددة فقط:
حجب منافذ SMTP غايته منع إساءة الاستخدام في البريد المزعج. وإن كنت بحاجة إلى نقل حركة بريد إلكتروني فعليك طلب إذن خاص من مزوّدك.
الأخطاء الشائعة
ما تراه في المتصفح ERR_TUNNEL_CONNECTION_FAILEDيعني أن طلب CONNECT تلقّى استجابة غير 200. ولرؤية التفاصيل جرّب باستخدام curl.
الفحص من سطر الأوامر
يُظهر الأمر الأخير مدى بساطة البروتوكول: يكفي إرسال بضعة أسطر نصية وتلقّي استجابة 200.
اعتراض TLS (SSL Inspection)
بعض البروكسيات المؤسسية تتوسط بدلًا من إنشاء النفق: فتتصل هي بالوجهة وتقدّم للعميل شهادة مزيّفة موقّعة بشهادة الجذر الخاصة بالمؤسسة. وعندما يحدث ذلك يستطيع البروكسي قراءة المحتوى المشفّر أيضًا.
انقر على أيقونة القفل في المتصفح وانظر إلى الجهة المُصدِرة للشهادة. فإذا ظهر اسم المؤسسة بدلًا من سلطة الشهادات العامة المتوقعة فهذا يعني أن اعتراض TLS مُطبَّق. وقد تناولنا الموضوع في مقالنا عن البروكسي الشفاف بالتفصيل.
ملاحظة حول الأداء: إعادة استخدام النفق
بعد إنشاء نفق CONNECT يمكن أن تمر عدة طلبات إلى الوجهة نفسها عبر النفق ذاته. وهذا يعني دفع تكلفة تبادل المصافحة مرة واحدة فقط. وإبقاء keep-alive مفعّلًا في عميلك يحقق مكسب سرعة ملحوظًا في الحركة القائمة على CONNECT.
الطلب الأول مكلف، وما يليه رخيص. والعميل الذي يفتح اتصالًا جديدًا مع كل طلب يدفع هذا الفارق باستمرار.
الخلاصة
إن CONNECT آلية بسيطة لكنها قوية تتيح لبروكسي HTTP نقل الحركة المشفّرة. فبعد إنشاء النفق لا يستطيع البروكسي رؤية المحتوى؛ بل يعرف فقط اسم النطاق الهدف والوقت وكمية البايتات. وتحدّ سياسات المنافذ من CONNECT لمنع إساءة الاستخدام. ولأجل الأداء تُعد إعادة استخدام النفق أمرًا حاسمًا. وللتحقق من إعدادك أداة فحص البروكسي لدينا يمكنك استخدامه.