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.

Proxy yang kompatibel dengan Puppeteer dan Playwright

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 CONNECTTampilan di ChromeTampilan di curl
407 tanpa opsi memasukkan kata sandi (headless Chrome)ERR_TUNNEL_CONNECTION_FAILEDcurl: (56) CONNECT tunnel failed, response 407
502 karena proxy tidak dapat menjangkau situsERR_TUNNEL_CONNECTION_FAILEDcurl: (56) CONNECT tunnel failed, response 502

Penyebab, diurutkan dari yang paling umum

  • Skrip otomatisasi tidak mengirim kredensial. Flag --proxy-server pada 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:port saat inisialisasi dan panggil page.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. 1

    Identifikasi respons CONNECT

    Jalankan perintah curl -v -x dengan baris proxy Anda, atau tempel ke alat pemeriksa proxy, untuk memastikan apakah proxy mengembalikan kode 407 atau 502.

  2. 2

    Untuk 407: masukkan kredensial dengan benar

    Pada skrip, manfaatkan hook autentikasi bawaan library alih-alih menyisipkan user:pass ke dalam --proxy-server.

  3. 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. 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

Artikel terkait

Error proxy
Cara Mengatasi 407 Proxy Authentication Required
Error 407 Proxy Authentication Required berarti proksi merespons tetapi menolak login Anda. Lihat output curl asli, penyebab umum, dan solusinya per aplikasi.
Error proxy
Error proxy 502 Bad Gateway: cari tahu siapa pengirimnya
502 Bad Gateway melalui proxy berarti server perantara tidak menerima respons yang valid. Cara mengetahui apakah proxy atau situs web yang bermasalah, lengkap dengan output curl nyata.
Cara setting proxy
Cara mengatur proxy dengan autentikasi di Puppeteer (Node.js)
Konfigurasi proxy HTTP(S) terotentikasi di Node.js Puppeteer menggunakan flag --proxy-server dan await page.authenticate().
Cara setting proxy
Cara mengatur proxy di Playwright (Autentikasi Browser & Per-Context)
Konfigurasi proxy HTTP(S) berotentikasi di Playwright untuk Node.js dan Python. Jalankan banyak IP statis terisolasi di berbagai BrowserContext.
Cara setting proxy
Cara setting proxy berotentikasi di Selenium WebDriver
Konfigurasi proxy HTTP(S) berotentikasi username:password di Selenium WebDriver menggunakan selenium-wire atau ekstensi onAuthRequired.
Tools gratis
Proxy Checker: Cek Proxy Anda Secara Online
Proxy checker gratis: tempel hingga 100 proxy format ip:port:user:pass dan cek proxy online untuk status, IP keluar, dan latensi. Pahami arti setiap error.
Cara setting proxy
Panduan Konfigurasi Proxy di Google Chrome
Konfigurasikan proxy HTTP(S) VinaProxy di Google Chrome tanpa mengubah IP seluruh sistem menggunakan ekstensi Chrome, flag CLI --proxy-server, atau profil terpisah.
Cara setting proxy
Cara Mengonfigurasi Proxy di Windows 10 & Windows 11
Konfigurasikan proxy HTTP(S) VinaProxy di Windows 10 dan Windows 11 menggunakan Pengaturan Sistem WinINET, Variabel Lingkungan PowerShell, atau netsh winhttp.