វិធីដោះស្រាយកំហុស ERR_TUNNEL_CONNECTION_FAILED ពេលប្រើប្រូកស៊ី
Updated:
ដើម្បីបើកទំព័រ https:// តាមរយៈប្រូកស៊ី កម្មវិធីរុករកនឹងផ្ញើសំណើ CONNECT ហើយរង់ចាំឱ្យប្រូកស៊ីបើក tunnel ទៅកាន់គេហទំព័រនោះ។ ERR_TUNNEL_CONNECTION_FAILED នឹងបង្ហាញឡើងនៅពេលប្រូកស៊ីឆ្លើយតបសំណើនោះមកវិញដោយកំហុស ជំនួសឱ្យការយល់ព្រម។ បញ្ហានោះគឺ Chrome មិនប្រាប់អ្នកថាតើជាកំហុសអ្វីនោះទេ ដូច្នេះការងារដំបូងគឺត្រូវស្វែងរកលេខកូដពិតប្រាកដ។
ករណីចំនួន 2 ដែលយើងបានជួបប្រទះ
ទាំងពីរនេះត្រូវបានសាកល្បងជាមួយប្រូកស៊ីតេស្ត ដែលបានសរសេរឡើងវិញនៅទីនេះជាមួយអាសយដ្ឋានឯកសារ 203.0.113.10:8080 និង user123:pass456។ នៅក្នុងផ្ទាំង Chrome ធម្មតា ករណី 407 មិនក្លាយជាកំហុស tunnel នោះទេ តែ Chrome នឹងបើកប្រអប់ផ្ទាំង sign-in សម្រាប់ឱ្យបញ្ចូល username និង password របស់ប្រូកស៊ីជំនួសវិញ។ ដូច្នេះ កំហុស tunnel ដែលបង្កឡើងដោយ 407 ភាគច្រើនកើតឡើងលើឧបករណ៍ automation និងកម្មវិធីដែលមិនអាចបង្ហាញប្រអប់ផ្ទាំងបញ្ចូលពាក្យសម្ងាត់។
| ប្រូកស៊ីឆ្លើយតប 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 |
មូលហេតុចម្បងៗតាមលំដាប់លំដោយ
- ស្គ្រីប automation មិនបានផ្ញើព័ត៌មានសម្ងាត់ (credentials)។ flag
--proxy-serverរបស់ Chrome ទទួលយកតែ host និង port ប៉ុណ្ណោះ មិនទទួល user:pass ទេ។ កម្មវិធី Headless Puppeteer ឬ Selenium នឹងទទួលបានកូដ 407 ហើយរាយការណ៍ពីការបរាជ័យនៃ tunnel។ - កម្មវិធីទូរសព្ទដំណើរការក្រោយ Wi-Fi proxy ដែលការពារដោយពាក្យសម្ងាត់។ កម្មវិធីនេះគ្មានប្រអប់ផ្ទាំងចូលគណនីទេ ដូច្នេះ 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 បង្ហាញពីបញ្ហានៅលើគោលដៅ ឬផ្លូវតភ្ជាប់នៅពីក្រោយប្រូកស៊ី។ ប្រសិនបើអ្នកមិនចង់ប្រើ terminal ទេ សូមចម្លងបន្ទាត់នោះដាក់ចូលទៅក្នុង proxy checker ដែលវានឹងរាយការណ៍ថា auth failed (407) ឬ HTTP 502 សម្រាប់ស្ថានភាពដូចគ្នានេះ។
វិធីដោះស្រាយតាមបរិស្ថាននីមួយៗ
- Puppeteer: រក្សាទុក
--proxy-server=http://host:portនៅពេល launch ហើយហៅប្រើpage.authenticate({ username, password })មុនពេលរុករកទំព័រ (navigating)។ ឧទាហរណ៍ពេញលេញមាននៅក្នុង ការណែនាំអំពី Puppeteer proxy។ - Playwright: បញ្ចូល
proxy: { server, username, password }នៅពេលដំណើរការកម្មវិធីរុករក ហើយ Playwright នឹងឆ្លើយតបទៅកូដ 407 ជំនួសអ្នក សូមមើល Playwright។ - Selenium: Chrome មិនទទួលយក user:pass នៅលើ command line ឡើយ។ ការណែនាំអំពី Selenium បង្ហាញពីជម្រើសដែលអាចអនុវត្តបាន។
- Chrome លើ Windows: ប្រសិនបើផ្ទាំង sign-in មិនបង្ហាញឡើងទេ សូមពិនិត្យមើលថាតើ extension ប្រូកស៊ីណាមួយកំពុងបិទវាដែរឬទេ បន្ទាប់មកសាកល្បងម្ដងទៀតនៅក្នុងផ្ទាំងដែលគ្មាន extension។
- ទូរសព្ទ: សម្រាប់កម្មវិធីដែលត្រូវការប្រូកស៊ីមានការផ្ទៀងផ្ទាត់ សូមប្រើកម្មវិធីប្រូកស៊ីណាដែលគាំទ្រ user:pass ដូចមានបង្ហាញក្នុង ការណែនាំអំពីការដំឡើងលើ Android។
មួយជំហានម្តងៗ
- 1
កំណត់សម្គាល់ការឆ្លើយតបរបស់ CONNECT
ដំណើរការ
curl -v -xជាមួយបន្ទាត់ប្រូកស៊ីរបស់អ្នក ឬបិទភ្ជាប់វាទៅក្នុង checker ដើម្បីដឹងថាតើប្រូកស៊ីឆ្លើយតបកូដ 407 ឬ 502។ - 2
សម្រាប់ 407៖ ផ្ដល់ព័ត៌មានសម្ងាត់ឱ្យបានត្រឹមត្រូវ
នៅក្នុងស្គ្រីប សូមប្រើប្រាស់ authentication hook របស់ library ជំនួសឱ្យការដាក់ user:pass នៅក្នុង
--proxy-server។ - 3
សម្រាប់ 502៖ សាកល្បងគេហទំព័រផ្សេងទៀត
បើកគេហទំព័រធំមួយដូចជា example.com តាមរយៈប្រូកស៊ីដដែល។ ប្រសិនបើវាដំណើរការ បញ្ហាគឺបណ្ដាលមកពីគេហទំព័រគោលដៅដើម។
- 4
ដំណើរការឡើងវិញ និងផ្ទៀងផ្ទាត់ exit IP
នៅពេលដែល tunnel បើកដំណើរការ សូមចូលទៅកាន់ IP របស់ខ្ញុំ នៅក្នុងកម្មវិធីរុករកដដែលនោះ ដើម្បីបញ្ជាក់ថា traffic កំពុងឆ្លងកាត់តាមប្រូកស៊ី។
សំណួរដែលសួរញឹកញាប់
ហេតុអ្វីបានជាទំព័រ http អាចដំណើរការបាន តែទំព័រ https បរាជ័យ?
http ធម្មតាមិនត្រូវការ CONNECT ទេ ដោយសារប្រូកស៊ីបញ្ជូនបន្តសំណើនោះដោយផ្ទាល់។ មានតែ https ប៉ុណ្ណោះដែលបើក tunnel ដូច្នេះកំហុស tunnel នឹងបង្ហាញឡើងតែនៅទីនោះប៉ុណ្ណោះ។
តើអ្វីបណ្តាលឱ្យកើតមាន ERR_TUNNEL_CONNECTION_FAILED លើ Android?
ភាគច្រើនបណ្តាលមកពីកម្មវិធីមិនអាចបញ្ជូន username និង password ទៅកាន់ Wi-Fi proxy បាន។ សាកល្បងបើកទំព័រដដែលនោះក្នុង Chrome សម្រាប់ Android ប្រសិនបើ Chrome អាចបង្ហាញផ្ទាំងសួរ និងបើកបាន នោះបញ្ហាគឺស្ថិតនៅលើកម្មវិធីនោះហើយ។
តើខ្ញុំអាចដាក់ user:pass ក្នុង --proxy-server បានទេ?
មិនបានទេ។ Chrome មិនអើពើនឹងព័ត៌មានសម្ងាត់នៅក្នុង flag នោះឡើយ ដែលបណ្ដាលឱ្យកើតកូដ 407 និងកំហុស tunnel។ សូមធ្វើការផ្ទៀងផ្ទាត់តាមរយៈ Puppeteer, Playwright ឬ extension ជំនួសវិញ។
តើការប្តូរទៅប្រើ SOCKS5 នឹងលុបបំបាត់កំហុស tunnel ដែរឬទេ?
លុះត្រាតែកញ្ចប់បញ្ជាទិញរបស់អ្នកជា SOCKS5 ប៉ុណ្ណោះ។ VinaProxy ផ្ដល់ជូនទាំង HTTP(S) និង SOCKS5 សូមជ្រើសរើស protocol ណាដែលការបញ្ជាទិញរបស់អ្នកបង្ហាញក្នុងផ្ទាំងគ្រប់គ្រង ពីព្រោះការផ្គូផ្គងខុសនឹងបណ្ដាលឱ្យមានកំហុសផ្សេងទៀត។
ប្រូកស៊ីដែលដំណើរការជាមួយ Puppeteer និង Playwright
ប្រូកស៊ីរបស់ VinaProxy ប្រើប្រាស់ការចូលគណនីបែបស្តង់ដារ user:pass ដែល library automation ល្បីៗអាចគាំទ្របានភ្លាមៗដោយស្វ័យប្រវត្តិ។
មើលតម្លៃ