إصلاح خطأ ERR_TUNNEL_CONNECTION_FAILED مع البروكسي
آخر تحديث:
لتحميل صفحة https:// عبر بروكسي، يرسل المتصفح طلب CONNECT وينتظر من البروكسي فتح نفق اتصال إلى الموقع. يظهر الخطأ ERR_TUNNEL_CONNECTION_FAILED عندما يرد البروكسي على هذا الطلب بخطأ بدلاً من قبوله. المشكلة أن Chrome لا يوضح لك نوع الخطأ بالضبط، لذا فإن الخطوة الأولى هي معرفة الرمز الفعلي.
حالتان قمنا بإعادة إنتاجهما
تم إجراء الحالتين على بروكسي تجريبي، ونعرضهما هنا باستخدام عنوان التوثيق 203.0.113.10:8080 وبيانات الاعتماد user123:pass456. في نافذة Chrome العادية، لا تتحول الحالة 407 إلى خطأ في نفق الاتصال؛ بل يفتح Chrome نافذة تسجيل دخول لإدخال اسم المستخدم وكلمة المرور للبروكسي. لذلك، تظهر أخطاء نفق الاتصال الناتجة عن 407 في الغالب مع أدوات الأتمتة والتطبيقات التي لا تملك واجهة لطلب كلمة المرور.
| رد البروكسي على CONNECT بـ | ما يعرضه Chrome | ما يعرضه curl |
|---|---|---|
407 مع عدم وجود طريقة لإدخال كلمة المرور (Chrome بدون واجهة رسومية headless) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502 لتعذر وصول البروكسي إلى الموقع | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
الأسباب، مرتبة حسب الأكثر احتمالاً
- عدم إرسال بيانات الاعتماد عبر سكربت الأتمتة. يقبل خيار
--proxy-serverفي Chrome المضيف والمنفذ فقط، ولا يقبل user:pass. وبالتالي يتلقى Puppeteer أو Selenium بنمط headless الرمز 407 ويبلغان عن فشل في نفق الاتصال. - تطبيق هاتف يعمل خلف بروكسي Wi-Fi محمي بكلمة مرور. لا يحتوي التطبيق على نافذة لتسجيل الدخول، مما يؤدي إلى تعطل اتصالات HTTPS بينما يستمر المتصفح في العمل بصورة طبيعية.
- عدم قدرة البروكسي على الوصول إلى الوجهة المستهدفة. يُرجع البروكسي الرمز 502 استجابةً لطلب CONNECT؛ وتتناول صفحة 502 Bad Gateway هذه المشكلة بالتفصيل.
- فشل الوصول إلى بعض المواقع فقط. قد يكون الموقع المستهدف محظوراً أو متوقفاً عن العمل، بينما تعمل المواقع الأخرى عبر نفس البروكسي دون مشاكل.
اكتشف الرمز الفعلي بأمر curl واحد
نفّذ الأمر curl -v -x http://user123:[email protected]:8080 https://example.com مع استبدال القيم ببياناتك الخاصة. تحقّق من السطر الذي يلي > CONNECT example.com:443 HTTP/1.1 مباشرة: إذا ظهر الرمز 407 فاتبع دليل الخطأ 407؛ وإذا ظهر 502 فهذا يشير إلى مشكلة في الوجهة أو مسار الاتصال خلف البروكسي. وإذا كنت تفضل عدم استخدام موجه الأوامر، الصق السطر في أداة فحص البروكسي، والتي ستعرض لك auth failed (407) أو HTTP 502 في نفس هذه الحالات.
الحلول حسب بيئة الاستخدام
- Puppeteer: احتفظ بالخيار
--proxy-server=http://host:portعند التشغيل واستدعِpage.authenticate({ username, password })قبل التوجّه للرابط. تجد مثالاً كاملاً في دليل إعداد بروكسي Puppeteer. - Playwright: مرّر
proxy: { server, username, password }عند تشغيل المتصفح وسيتولى Playwright الرد على الرمز 407 نيابةً عنك؛ راجع Playwright. - Selenium: لا يقبل Chrome إدخال user:pass مباشرة عبر سطر الأوامر؛ يوضح دليل Selenium الخيارات العملية المتاحة.
- Chrome على Windows: إذا لم تظهر نافذة تسجيل الدخول إطلاقاً، فتحقق مما إذا كانت هناك إضافة للبروكسي تمنع ظهورها، ثم أعد المحاولة في نافذة متصفح خالية من الإضافات.
- الهواتف الذكية: بالنسبة للتطبيقات التي تحتاج إلى بروكسي يتطلب مصادقة، استخدم تطبيق بروكسي يدعم user:pass كما هو موضح في دليل إعداد Android.
خطوة بخطوة
- 1
تحديد استجابة CONNECT
نفّذ الأمر
curl -v -xمع سطر البروكسي الخاص بك، أو الصقه في أداة الفحص، لتعرف ما إذا كان البروكسي يُرجع 407 أم 502. - 2
في حال الرمز 407: إدخال بيانات الاعتماد بالشكل الصحيح
في السكربتات البرمجية، استخدم دالة المصادقة الخاصة بالمكتبة بدلاً من وضع user:pass داخل خيار
--proxy-server. - 3
في حال الرمز 502: تجربة موقع آخر
جرّب تحميل موقع كبير ومستقر مثل example.com عبر نفس البروكسي. إذا فتح الموقع بنجاح، فالمشكلة من الموقع المستهدف الأصلي.
- 4
إعادة التشغيل والتأكد من عنوان IP الخروج
بمجرد فتح نفق الاتصال بنجاح، توجّه إلى عنوان IP الخاص بي من نفس المتصفح للتأكد من مرور البيانات عبر البروكسي.
الأسئلة الشائعة
لماذا تفتح صفحات http بينما تفشل صفحات https؟
لا يتطلب بروتوكول http العادي طلب CONNECT؛ إذ يقوم البروكسي بإعادة توجيه الطلب مباشرة. أما فتح نفق الاتصال فيقتصر على https، لذا لا تظهر أخطاء نفق الاتصال إلا معه.
ما الذي يسبب خطأ ERR_TUNNEL_CONNECTION_FAILED على Android؟
السبب الأكثر شيوعاً هو استخدام تطبيق لا يمكنه إرسال اسم المستخدم وكلمة المرور لبروكسي شبكة الـ Wi-Fi. جرّب فتح الصفحة نفسها في Chrome على Android؛ فإذا تمكن Chrome من طلب البيانات وعرض الصفحة، فالمشكلة تكمن في التطبيق نفسه.
هل يمكنني إدخال user:pass داخل خيار --proxy-server؟
لا. يتجاهل Chrome بيانات الاعتماد المكتوبة ضمن هذا الخيار، مما يؤدي لظهور الرمز 407 وخطأ نفق الاتصال. استخدم المصادقة عبر Puppeteer أو Playwright أو عبر إضافة متصفح بدلاً من ذلك.
هل يحل التبديل إلى SOCKS5 مشكلة خطأ نفق الاتصال؟
فقط إذا كانت خطتك تدعم SOCKS5. توفر VinaProxy كلاً من HTTP(S) وSOCKS5؛ اختر البروتوكول الموضح في لوحة التحكم لاشتراكك، حيث يؤدي عدم تطابق البروتوكول إلى أخطاء أخرى.
خوادم بروكسي متوافقة بالكامل مع Puppeteer وPlaywright
تعتمد خوادم بروكسي VinaProxy على تسجيل دخول قياسي بواسطة user:pass تدعمه أشهر مكتبات الأتمتة تلقائياً ودون إعدادات معقدة.
عرض الأسعار