প্রক্সিতে ERR_TUNNEL_CONNECTION_FAILED সমস্যার সমাধান
Updated:
প্রক্সির মাধ্যমে কোনো 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ফ্ল্যাগ কেবল host এবং port গ্রহণ করে, user:pass নয়। ফলে Headless Puppeteer বা Selenium 407 পায় এবং টানেল ফেইলিউর দেখায়। - পাসওয়ার্ড-সুরক্ষিত Wi-Fi প্রক্সির আড়ালে থাকা ফোন অ্যাপ। অ্যাপটিতে কোনো লগইন ডায়ালগ না থাকায় ব্রাউজার কাজ করলেও HTTPS বন্ধ হয়ে যায়।
- প্রক্সি গন্তব্যে পৌঁছাতে পারছে না। এটি CONNECT-এর জবাবে 502 পাঠায়; 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 নির্দেশ করে গন্তব্যে বা প্রক্সির পেছনের পাথে সমস্যা রয়েছে। আপনি যদি টার্মিনাল ব্যবহার করতে না চান, তবে লাইনটি 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: সাইন-ইন ডায়ালগটি না আসলে কোনো প্রক্সি এক্সটেনশন এটি আটকে দিচ্ছে কি না তা পরীক্ষা করুন, তারপর এক্সটেনশন ছাড়া একটি নতুন উইন্ডোতে আবার চেষ্টা করুন।
- ফোন: যেসব অ্যাপে অথেনটিকেটেড প্রক্সি প্রয়োজন, সেগুলোর জন্য Android সেটআপ গাইডের মতো user:pass সমর্থন করে এমন একটি প্রক্সি অ্যাপ ব্যবহার করুন।
ধাপে ধাপে
- 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 লগইন ব্যবহার করে, যা জনপ্রিয় অটোমেশন লাইব্রেরিগুলোতে সরাসরি কাজ করে।
মূল্য তালিকা দেখুন