प्रॉक्सी के साथ 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 (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502 क्योंकि प्रॉक्सी साइट तक नहीं पहुंच पा रही है | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
कारण, सबसे संभावित पहले
- ऑटोमेशन स्क्रिप्ट कोई क्रेडेंशियल नहीं भेजती। Chrome का
--proxy-serverफ़्लैग केवल होस्ट और पोर्ट स्वीकार करता है, user:pass नहीं। Headless Puppeteer या Selenium को 407 मिलता है और वे टनल विफलता की रिपोर्ट करते हैं। - पासवर्ड-सुरक्षित Wi-Fi प्रॉक्सी के पीछे फोन ऐप। ऐप में कोई लॉगिन डायलॉग नहीं होता, इसलिए ब्राउज़र काम करते रहने के बावजूद HTTPS चलना बंद हो जाता है।
- प्रॉक्सी टार्गेट तक नहीं पहुंच पा रही है। यह CONNECT पर 502 लौटाती है; 502 Bad Gateway पेज में इसे विस्तार से समझाया गया है।
- केवल कुछ साइटें विफल हो रही हैं। टार्गेट साइट ब्लॉक कर रही है या डाउन है, जबकि उसी प्रॉक्सी से अन्य साइटें काम कर रही हैं।
एक curl कमांड से असली कोड का पता लगाएं
अपने मानों (values) के साथ curl -v -x http://user123:[email protected]:8080 https://example.com चलाएं। > CONNECT example.com:443 HTTP/1.1 के ठीक बाद वाली लाइन देखें: 407 का मतलब है 407 गाइड का पालन करना; 502 टार्गेट या प्रॉक्सी के पीछे के रूट में समस्या की ओर इशारा करता है। यदि आप टर्मिनल का उपयोग नहीं करना चाहते हैं, तो इस लाइन को proxy checker में पेस्ट करें, जो इन्हीं स्थितियों के लिए 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 गाइड में इसके काम करने योग्य विकल्प दिखाए गए हैं।
- Windows पर Chrome: यदि साइन-इन डायलॉग कभी दिखाई नहीं देता है, तो जांचें कि क्या कोई प्रॉक्सी एक्सटेंशन इसे रोक रहा है, फिर बिना एक्सटेंशन वाली विंडो में दोबारा प्रयास करें।
- फ़ोन: ऐसे ऐप्स के लिए जिन्हें प्रमाणित प्रॉक्सी की आवश्यकता होती है, user:pass का समर्थन करने वाले प्रॉक्सी ऐप का उपयोग करें, जैसा कि Android सेटअप गाइड में बताया गया है।
स्टेप बाय स्टेप
- 1
CONNECT रिस्पॉन्स पहचानें
यह जानने के लिए कि प्रॉक्सी 407 लौटा रही है या 502, अपनी प्रॉक्सी लाइन के साथ
curl -v -xचलाएं या उसे चेकर में पेस्ट करें। - 2
407 के लिए: क्रेडेंशियल सही तरीके से दें
स्क्रिप्ट में,
--proxy-serverमें user:pass डालने के बजाय लाइब्रेरी के ऑथेंटिकेशन हुक का उपयोग करें। - 3
502 के लिए: कोई दूसरी साइट आज़माएं
उसी प्रॉक्सी के ज़रिए example.com जैसी किसी बड़ी साइट को लोड करें। यदि यह काम करती है, तो समस्या मूल टार्गेट साइट में है।
- 4
दोबारा चलाएं और एग्जिट IP की पुष्टि करें
टनल खुलने के बाद, यह पुष्टि करने के लिए कि ट्रैफ़िक प्रॉक्सी से होकर जा रहा है, उसी ब्राउज़र में my IP पर जाएं।
अक्सर पूछे जाने वाले प्रश्न
http पेज लोड क्यों होते हैं जबकि https पेज विफल हो जाते हैं?
सामान्य http को CONNECT की आवश्यकता नहीं होती; प्रॉक्सी रिक्वेस्ट को सीधे आगे भेज देती है। केवल https ही टनल खोलता है, इसलिए टनल एरर सिर्फ़ वहीं दिखाई देती हैं।
Android पर ERR_TUNNEL_CONNECTION_FAILED का क्या कारण है?
अक्सर ऐसा ऐप जो Wi-Fi प्रॉक्सी को यूज़रनेम और पासवर्ड पास नहीं कर सकता। उसी पेज को Android के लिए Chrome में आज़माएं; यदि Chrome प्रॉम्प्ट करके उसे लोड कर लेता है, तो समस्या ऐप में है।
क्या मैं --proxy-server के अंदर user:pass डाल सकता हूँ?
नहीं। Chrome उस फ़्लैग में क्रेडेंशियल्स को अनदेखा कर देता है, जिससे 407 और टनल एरर आ जाती है। इसके बजाय Puppeteer, Playwright या किसी एक्सटेंशन के ज़रिए ऑथेंटिकेट करें।
क्या SOCKS5 पर स्विच करने से टनल एरर हट जाएगी?
केवल तभी जब आपका ऑर्डर SOCKS5 का हो। VinaProxy HTTP(S) और SOCKS5 दोनों प्रदान करता है; डैशबोर्ड में आपके ऑर्डर में दिखने वाला प्रोटोकॉल ही चुनें, क्योंकि बेमेल प्रोटोकॉल से अन्य एरर आ सकती हैं।
प्रॉक्सी जो Puppeteer और Playwright के साथ काम करती हैं
VinaProxy प्रॉक्सी मानक user:pass लॉगिन का उपयोग करती हैं जिसे लोकप्रिय ऑटोमेशन लाइब्रेरी बिना किसी अतिरिक्त कॉन्फ़िगरेशन के आसानी से संभाल लेती हैं।
कीमतें देखें