Memperbaiki ERR_TUNNEL_CONNECTION_FAILED dengan proxy
Diperbarui:
Untuk memuat halaman https:// melalui proxy, browser mengirimkan permintaan CONNECT dan menunggu proxy membuka tunnel ke situs tujuan. ERR_TUNNEL_CONNECTION_FAILED muncul ketika proxy merespons permintaan tersebut dengan pesan error alih-alih menyetujuinya. Kendalanya, Chrome tidak menampilkan kode error spesifiknya, jadi langkah pertama adalah menemukan kode sebenarnya.
Dua kasus yang kami reproduksi
Keduanya diuji menggunakan proxy percobaan, dituliskan di sini dengan alamat dokumentasi 203.0.113.10:8080 dan user123:pass456. Pada jendela Chrome reguler, kasus 407 tidak menjadi error tunnel; Chrome justru menampilkan dialog masuk untuk memasukkan nama pengguna dan kata sandi proxy. Oleh karena itu, error tunnel akibat 407 sebagian besar terjadi pada alat otomatisasi dan aplikasi yang tidak mendukung dialog permintaan kata sandi.
| Respons proxy untuk CONNECT | Tampilan di Chrome | Tampilan di curl |
|---|---|---|
407 tanpa opsi memasukkan kata sandi (headless Chrome) | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 407 |
502 karena proxy tidak dapat menjangkau situs | ERR_TUNNEL_CONNECTION_FAILED | curl: (56) CONNECT tunnel failed, response 502 |
Penyebab, diurutkan dari yang paling umum
- Skrip otomatisasi tidak mengirim kredensial. Flag
--proxy-serverpada Chrome hanya menerima host dan port, bukan user:pass. Puppeteer atau Selenium headless akan menerima respons 407 dan melaporkan kegagalan tunnel. - Aplikasi ponsel berjalan di balik proxy Wi-Fi berotentikasi. Aplikasi tidak menyediakan dialog login, sehingga koneksi HTTPS terputus sementara browser tetap berfungsi normal.
- Proxy tidak dapat menjangkau tujuan. Proxy mengembalikan respons 502 untuk CONNECT; halaman 502 Bad Gateway membahas masalah ini secara mendalam.
- Hanya situs tertentu yang gagal diakses. Situs tujuan mengalami gangguan atau memblokir koneksi, sementara situs lain berfungsi normal melalui proxy yang sama.
Cari tahu kode aslinya dengan satu perintah curl
Jalankan curl -v -x http://user123:[email protected]:8080 https://example.com dengan nilai Anda sendiri. Periksa baris tepat setelah > CONNECT example.com:443 HTTP/1.1: kode 407 berarti Anda perlu mengikuti panduan 407; kode 502 menandakan masalah pada situs tujuan atau jalur di belakang proxy. Jika tidak ingin menggunakan terminal, tempel baris tersebut ke proxy checker, yang akan melaporkan auth failed (407) atau HTTP 502 untuk kondisi yang sama.
Solusi berdasarkan lingkungan kerja
- Puppeteer: tetap gunakan
--proxy-server=http://host:portsaat inisialisasi dan panggilpage.authenticate({ username, password })sebelum navigasi. Contoh lengkap tersedia di panduan proxy Puppeteer. - Playwright: teruskan parameter
proxy: { server, username, password }saat meluncurkan browser, dan Playwright akan menangani respons 407 secara otomatis; lihat Playwright. - Selenium: Chrome tidak menerima user:pass melalui baris perintah; panduan Selenium menyajikan opsi alternatif yang dapat digunakan.
- Chrome di Windows: jika dialog masuk tidak pernah muncul, periksa apakah ada ekstensi proxy yang memblokirnya, lalu coba lagi di jendela browser tanpa ekstensi.
- Ponsel: untuk aplikasi yang membutuhkan autentikasi proxy, gunakan aplikasi proxy pendukung user:pass seperti yang dijelaskan dalam panduan penyiapan Android.
Langkah demi langkah
- 1
Identifikasi respons CONNECT
Jalankan perintah
curl -v -xdengan baris proxy Anda, atau tempel ke alat pemeriksa proxy, untuk memastikan apakah proxy mengembalikan kode 407 atau 502. - 2
Untuk 407: masukkan kredensial dengan benar
Pada skrip, manfaatkan hook autentikasi bawaan library alih-alih menyisipkan user:pass ke dalam
--proxy-server. - 3
Untuk 502: coba akses situs lain
Buka situs besar seperti example.com melalui proxy yang sama. Jika berhasil dimuat, kendala berada pada situs tujuan utama.
- 4
Jalankan ulang dan konfirmasi IP keluar
Setelah tunnel berhasil dibuka, buka halaman IP saya di browser yang sama untuk memastikan lalu lintas data melewati proxy.
Pertanyaan umum
Mengapa halaman http bisa dibuka sedangkan halaman https gagal?
Protokol http biasa tidak membutuhkan metode CONNECT; proxy langsung meneruskan permintaan. Hanya https yang memerlukan tunnel, sehingga error tunnel hanya muncul pada koneksi tersebut.
Apa penyebab ERR_TUNNEL_CONNECTION_FAILED di Android?
Paling sering disebabkan oleh aplikasi yang tidak mampu meneruskan nama pengguna dan kata sandi ke proxy Wi-Fi. Coba buka halaman yang sama di Chrome untuk Android; jika Chrome menampilkan dialog login dan berhasil memuatnya, masalah terletak pada aplikasi tersebut.
Bisakah saya menyertakan user:pass di dalam --proxy-server?
Tidak. Chrome mengabaikan kredensial di flag tersebut, yang berujung pada respons 407 dan error tunnel. Gunakan metode autentikasi Puppeteer, Playwright, atau ekstensi browser sebagai gantinya.
Apakah beralih ke SOCKS5 akan mengatasi error tunnel?
Hanya jika paket pesanan Anda mendukung SOCKS5. VinaProxy menyediakan HTTP(S) maupun SOCKS5; pilih protokol yang tercantum pada pesanan Anda di dasbor, karena ketidaksesuaian protokol akan memicu error berbeda.
Proxy yang kompatibel dengan Puppeteer dan Playwright
Proxy VinaProxy menggunakan autentikasi standar user:pass yang langsung didukung oleh berbagai library otomatisasi populer tanpa konfigurasi rumit.
Lihat harga