HTTP CONNECT Proxy: Cara Kerja Tunnel HTTPS & Error 407
Pernah mencoba membuka website HTTPS melalui HTTP proxy lalu bingung kenapa koneksinya tetap terenkripsi? Atau melihat tulisan CONNECT example.com:443 ketika menjalankan cURL dengan mode verbose? Di sinilah metode HTTP CONNECT bekerja.
CONNECT bukan request biasa untuk mengambil halaman website. Client menggunakannya untuk meminta proxy membuka sebuah tunnel menuju host dan port tertentu. Setelah tunnel berhasil dibuat, traffic berikutnya dapat mengalir melalui jalur tersebut, termasuk proses TLS ketika tujuan menggunakan HTTPS.
Konsep ini penting kalau kamu menggunakan proxy di browser, script, API client, cURL, automation, atau aplikasi lain yang mengakses HTTPS. Dengan memahami CONNECT, error seperti 407 Proxy Authentication Required, timeout, atau proxy yang hanya bekerja pada port tertentu juga jauh lebih mudah ditelusuri.
Kalau konsep proxy server sendiri masih belum terlalu familiar, kamu bisa mulai dari panduan cara kerja proxy server terlebih dahulu.
Apa Itu HTTP CONNECT?
HTTP CONNECT adalah metode HTTP yang digunakan untuk meminta proxy membuat koneksi menuju server tujuan tertentu. Targetnya bukan URL lengkap seperti request GET biasa, melainkan kombinasi hostname dan nomor port.
Format sederhananya terlihat seperti ini:
Artinya client meminta proxy membuat koneksi menuju example.com pada port 443.
Jika proxy berhasil membuat koneksi tersebut, proxy akan mengembalikan respons sukses. Setelah itu koneksi berubah menjadi tunnel dua arah.
RFC 9110 menjelaskan bahwa respons sukses 2xx pada CONNECT menandakan proxy dan client beralih ke tunnel mode. Setelah titik tersebut, proxy meneruskan data antara kedua sisi sampai koneksi ditutup.
Spesifikasi resminya dapat dibaca di RFC 9110 bagian CONNECT.
Kenapa HTTPS Membutuhkan CONNECT Saat Melewati HTTP Proxy?
Untuk memahami alasannya, bandingkan dulu request HTTP biasa dengan HTTPS.
Pada HTTP biasa, request masih berupa HTTP yang dapat dipahami oleh HTTP proxy. Proxy bisa menerima request lalu meneruskannya ke server tujuan.
HTTP Request
Meneruskan Request
HTTP
Pada HTTPS, kondisinya berbeda. Client ingin membuat koneksi TLS dengan website tujuan. Karena proxy berada di tengah jalur jaringan, client terlebih dahulu meminta proxy membuka tunnel menuju port HTTPS website tersebut.
CONNECT
Buat Tunnel
Port 443
Setelah tunnel terbentuk, proses TLS berlangsung melalui jalur tersebut.
TLS
Forward Data
TLS
MDN menjelaskan CONNECT sebagai metode yang meminta proxy membuat HTTP tunnel menuju destination server dan meneruskan data dua arah setelah tunnel berhasil dibuat.
Lihat dokumentasi HTTP CONNECT di MDN untuk penjelasan protokolnya.
Urutan Koneksi HTTPS Melalui HTTP Proxy
Kalau prosesnya dipecah, alurnya kurang lebih seperti berikut.
Browser, aplikasi, atau script membuka koneksi TCP menuju alamat proxy.
Client meminta proxy membuka tunnel menuju hostname dan port website tujuan.
Proxy mencoba membuat koneksi menuju server tujuan pada port yang diminta.
Jika koneksi berhasil dibuat, client menerima respons 2xx.
Client kemudian menjalankan TLS handshake dengan server tujuan melalui tunnel tersebut.
Request dan response HTTPS berikutnya dikirim melalui tunnel.
Dari sisi pengguna, seluruh proses ini biasanya berlangsung otomatis. Browser atau HTTP client yang mendukung proxy akan mengurus CONNECT tanpa pengguna harus mengetik request-nya secara manual.
Apa yang Bisa Dilihat Proxy Saat Menggunakan CONNECT?
Salah satu kesalahpahaman yang cukup umum adalah menganggap CONNECT otomatis membuat proxy tidak mengetahui tujuan koneksi sama sekali.
Itu tidak benar. Proxy perlu mengetahui destination yang harus dibuka karena client sendiri mengirim hostname dan port melalui request CONNECT.
Jadi setidaknya proxy mengetahui bahwa client meminta koneksi menuju example.com:443.
Namun setelah tunnel HTTPS biasa berhasil dibuat, isi HTTP seperti path URL, body request, response HTML, cookie, atau header aplikasi berada di dalam koneksi TLS antara client dan server tujuan.
| Informasi | Proxy CONNECT Biasa |
|---|---|
| Hostname tujuan CONNECT | Dapat terlihat |
| Port tujuan | Dapat terlihat |
| IP client | Dapat terlihat oleh proxy |
| IP server tujuan | Diketahui saat proxy membuat koneksi |
| Isi halaman HTTPS | Tidak terbaca sebagai HTTP biasa jika TLS end-to-end tetap utuh |
| Password website di dalam HTTPS | Tidak terlihat sebagai plaintext pada tunnel TLS biasa |
HTTP Proxy dan HTTPS Proxy Bukan Hal yang Sama dengan Website HTTP dan HTTPS
Istilah ini sering membuat bingung karena kata HTTP dan HTTPS dapat merujuk pada dua koneksi yang berbeda: koneksi client ke proxy dan koneksi menuju website tujuan.
| Koneksi | Apa yang Terjadi? |
|---|---|
| HTTP website lewat HTTP proxy | Proxy dapat meneruskan request HTTP secara langsung. |
| HTTPS website lewat HTTP proxy | Umumnya menggunakan CONNECT lalu TLS berjalan melalui tunnel. |
| HTTPS website lewat HTTPS proxy | Koneksi client ke proxy sendiri menggunakan TLS, kemudian proxy dapat membuat tunnel menuju website. |
| HTTPS website lewat SOCKS5 | SOCKS membuat jalur koneksi, kemudian TLS website berjalan melalui jalur tersebut. |
Kalau ingin memahami pengelompokan protokol proxy secara lebih luas, baca artikel jenis-jenis proxy.
Cara Melihat HTTP CONNECT Menggunakan cURL
cURL sangat membantu untuk melihat apa yang benar-benar terjadi ketika sebuah request HTTPS melewati HTTP proxy.
Misalnya kamu mempunyai proxy:
IP:
203.0.113.10Port:
8080
Jalankan:
Opsi -v mengaktifkan verbose output sehingga detail proses koneksi dapat terlihat.
Kalau proxy bekerja, kamu biasanya akan menemukan bagian seperti:
Setelah respons tersebut, cURL melanjutkan proses TLS menuju website melalui tunnel.
Dokumentasi resmi cURL menjelaskan bahwa HTTPS melalui HTTP proxy biasanya menggunakan tunneling dan CONNECT secara otomatis.
Lihat cURL manual untuk opsi proxy lengkap.
Apa Fungsi --proxytunnel pada cURL?
cURL menyediakan opsi --proxytunnel atau -p.
Opsi tersebut meminta cURL menggunakan HTTP CONNECT tunnel ketika beroperasi melalui HTTP proxy.
Untuk request HTTPS biasa melalui HTTP proxy, CONNECT memang biasanya sudah digunakan. Opsi ini lebih terasa manfaatnya ketika kamu ingin memaksa mode tunneling pada kondisi atau protokol tertentu.
Cara Mengecek Proxy CONNECT dengan Username dan Password
Kalau proxy membutuhkan autentikasi, cURL menyediakan opsi --proxy-user atau -U.
Jika autentikasi diterima, proxy dapat melanjutkan pembuatan tunnel.
Cari Proxy untuk Testing HTTP CONNECT?
GudangProxy menyediakan daftar proxy gratis yang dapat difilter berdasarkan negara, protokol, tingkat anonimitas, dan status koneksi. Kamu bisa memilih proxy lalu mengujinya menggunakan browser, cURL, atau HTTP client lainnya.
Lihat Daftar Proxy Gratis →Apa Itu Error 407 Proxy Authentication Required?
Error 407 Proxy Authentication Required berarti proxy meminta client melakukan autentikasi sebelum request dapat diteruskan.
Alur sederhananya seperti ini:
CONNECT
407
Credential
Tunnel
Proxy yang membutuhkan autentikasi mengirim header Proxy-Authenticate bersama response 407.
Client kemudian dapat mengirim credential melalui header Proxy-Authorization.
MDN menjelaskan bahwa 407 khusus digunakan untuk autentikasi pada proxy, bukan autentikasi terhadap website tujuan.
Dokumentasinya tersedia di MDN 407 Proxy Authentication Required.
Bedanya Error 401, 403, dan 407
Ketiga status ini sering terlihat mirip karena sama-sama berkaitan dengan akses, tetapi sumber masalahnya berbeda.
| Status | Artinya | Biasanya Berasal Dari |
|---|---|---|
401 Unauthorized |
Resource membutuhkan autentikasi. | Website atau API tujuan. |
407 Proxy Authentication Required |
Proxy membutuhkan autentikasi. | Proxy server. |
403 Forbidden |
Akses ditolak meskipun request sudah dipahami. | Website, proxy, atau policy jaringan. |
Kalau error yang muncul adalah 407, mengecek login website biasanya tidak menyelesaikan masalah. Yang harus diperiksa justru username dan password proxy.
Kenapa CONNECT ke Port 443 Berhasil tetapi Port Lain Gagal?
Ini belum tentu berarti proxy rusak.
Banyak HTTP proxy membatasi destination port yang boleh digunakan untuk CONNECT. Port HTTPS seperti 443 biasanya merupakan salah satu port yang diizinkan.
Misalnya:
bisa diizinkan, sedangkan:
bisa langsung ditolak.
Pembatasan semacam ini merupakan praktik keamanan yang masuk akal. RFC 9110 bahkan memperingatkan bahwa proxy CONNECT yang memperbolehkan koneksi ke port sembarang dapat disalahgunakan untuk meneruskan traffic yang tidak seharusnya.
CONNECT Bukan Berarti Proxy Mendukung Semua Protokol
CONNECT pada dasarnya membuat tunnel byte dua arah setelah proxy berhasil terkoneksi ke destination.
Namun implementasi proxy tetap dapat memiliki aturan sendiri mengenai hostname, port, autentikasi, timeout, ukuran traffic, atau policy jaringan.
Artinya dua HTTP proxy yang sama-sama mendukung CONNECT belum tentu memiliki kemampuan operasional yang sama.
HTTP CONNECT vs HTTP Proxy Biasa
| Aspek | HTTP Forwarding | HTTP CONNECT |
|---|---|---|
| Model | Proxy menerima request HTTP. | Proxy membuat tunnel. |
| Target | URL HTTP. | Host + port. |
| Isi request | Dapat diproses sebagai HTTP. | Setelah tunnel aktif, data diteruskan. |
| HTTPS | Tidak cukup untuk TLS end-to-end biasa. | Umum digunakan untuk HTTPS. |
| Caching | Dapat tersedia tergantung proxy. | CONNECT response sendiri tidak digunakan sebagai cache web. |
HTTP CONNECT vs SOCKS5
CONNECT dan SOCKS5 sama-sama bisa membantu aplikasi membuat koneksi melalui server perantara, tetapi keduanya bekerja dengan protokol yang berbeda.
| Aspek | HTTP CONNECT | SOCKS5 |
|---|---|---|
| Protokol | Bagian dari HTTP. | Protokol SOCKS. |
| Umum untuk HTTPS | Ya. | Ya, jika aplikasi mendukung SOCKS. |
| Autentikasi | Menggunakan mekanisme proxy authentication HTTP. | Memiliki mekanisme autentikasi SOCKS5. |
| UDP | Bukan fungsi CONNECT HTTP biasa. | SOCKS5 memiliki dukungan UDP. |
| Target | Host dan port. | Alamat tujuan melalui mekanisme SOCKS. |
Kalau aplikasi membutuhkan SOCKS secara khusus, baca panduan SOCKS5 Proxy.
Kenapa HTTP CONNECT Timeout?
Timeout bisa terjadi sebelum atau sesudah tunnel berhasil dibuat.
Sebelum tunnel terbentuk, penyebabnya dapat berupa proxy tidak merespons, destination tidak dapat dijangkau dari proxy, firewall memblokir port, atau DNS di sisi proxy gagal.
Setelah CONNECT berhasil, timeout masih dapat terjadi karena server tujuan lambat atau koneksi TLS bermasalah.
| Gejala | Kemungkinan Masalah |
|---|---|
| Tidak bisa connect ke proxy | IP proxy salah, port salah, firewall, atau proxy offline. |
| CONNECT timeout | Proxy gagal menjangkau destination. |
| CONNECT 200 lalu timeout | Masalah setelah tunnel dibuat, misalnya koneksi tujuan atau TLS. |
| Hanya satu domain gagal | Destination diblokir atau tidak bisa dijangkau dari proxy. |
| Hanya port tertentu gagal | CONNECT port policy pada proxy. |
Kenapa Muncul TLS atau Certificate Error Setelah CONNECT?
Respons CONNECT yang sukses hanya menunjukkan tunnel berhasil dibuat. Itu belum menjamin TLS handshake setelahnya akan berhasil.
Certificate error dapat berasal dari beberapa hal, seperti certificate website tidak valid, hostname tidak cocok, certificate authority tidak dipercaya, atau jaringan memakai TLS inspection.
Kalau tool seperti cURL atau library aplikasi menghasilkan certificate verification error, jangan langsung menonaktifkan verifikasi SSL.
Kenapa Proxy Mengembalikan 502 atau 504 Saat CONNECT?
Status seperti 502 atau 504 biasanya menunjukkan proxy mengalami masalah ketika mencoba berkomunikasi dengan upstream atau destination.
Beberapa kemungkinan yang perlu dicek:
- Server tujuan sedang down.
- Proxy tidak dapat melakukan DNS resolution.
- Firewall proxy memblokir destination.
- Destination port tidak diizinkan.
- Koneksi dari proxy menuju destination timeout.
- Proxy sedang overload.
Cara paling mudah untuk membedakannya adalah mencoba destination yang sama tanpa proxy dan mencoba proxy yang sama ke destination lain.
Cara Troubleshooting CONNECT Secara Bertahap
1. Pastikan Proxy Bisa Dijangkau
Periksa kembali hostname atau IP dan nomor port proxy.
2. Jalankan cURL dengan Verbose
Lihat apakah request CONNECT terkirim dan response apa yang diberikan proxy.
3. Periksa Status CONNECT
Jika mendapat 407, fokus pada autentikasi. Kalau mendapat 403, cek policy proxy. Jika koneksi timeout, cek jaringan dan destination.
4. Uji Destination Lain
Kalau hanya satu website gagal, masalah belum tentu berada pada proxy secara keseluruhan.
5. Uji Proxy Lain
Kalau beberapa destination sama-sama gagal pada satu proxy, bandingkan dengan endpoint proxy lain.
6. Periksa Port Tujuan
Pastikan proxy memperbolehkan CONNECT ke port tersebut.
Cara Membaca Output cURL Saat CONNECT
Misalnya output verbose menunjukkan:
Artinya:
| Baris | Makna |
|---|---|
| Connected to proxy | Koneksi client ke proxy berhasil. |
| CONNECT example.com:443 | Client meminta tunnel menuju destination. |
| 200 Connection Established | Proxy berhasil membuka tunnel. |
Kalau error baru muncul sesudah 200 Connection Established, masalah kemungkinan terjadi setelah tahap pembuatan tunnel.
Apakah CONNECT Mengubah IP yang Dilihat Website?
Dalam konfigurasi forward proxy biasa, koneksi TCP menuju website dibuat dari sisi proxy. Karena itu server tujuan umumnya melihat alamat IP yang digunakan proxy untuk keluar ke internet, bukan IP koneksi langsung milik client.
Ini tetap tidak berarti identitas pengguna otomatis tersembunyi sepenuhnya. Website masih dapat menggunakan cookie, akun login, browser fingerprint, dan sinyal lainnya.
Kalau ingin memahami bagian IP lebih dalam, baca artikel apa itu IP proxy.
Apakah HTTP CONNECT Sama dengan VPN?
Tidak. CONNECT membuat tunnel untuk koneksi tertentu yang diarahkan melalui HTTP proxy.
VPN bekerja pada layer dan mekanisme yang berbeda serta biasanya mengatur routing jaringan dalam cakupan yang lebih luas.
Perbandingan lengkapnya tersedia pada artikel Proxy vs VPN.
Kapan HTTP CONNECT Banyak Digunakan?
CONNECT paling mudah ditemui ketika aplikasi HTTPS harus menggunakan HTTP proxy. Contohnya browser, command-line client, API tooling, package manager tertentu, atau software perusahaan yang harus keluar melalui corporate proxy.
Beberapa use case yang umum antara lain:
- Akses HTTPS melalui forward proxy perusahaan.
- Testing website menggunakan IP proxy.
- API request dari environment yang mewajibkan outbound proxy.
- Debugging koneksi HTTPS melalui cURL.
- Automation yang dikonfigurasi menggunakan HTTP proxy.
- Network policy yang mengharuskan koneksi internet melewati gateway tertentu.
Praktik Aman Menggunakan HTTP CONNECT Proxy
Menggunakan CONNECT tidak menghilangkan kebutuhan untuk menjaga keamanan proxy itu sendiri.
- Gunakan proxy dari sumber yang dapat dipercaya untuk data sensitif.
- Jangan menyimpan credential proxy di source code publik.
- Gunakan autentikasi jika proxy tidak ditujukan untuk akses publik.
- Batasi destination dan port jika kamu mengelola proxy sendiri.
- Jangan menonaktifkan validasi TLS hanya untuk menghilangkan certificate error.
- Gunakan timeout supaya aplikasi tidak menunggu proxy mati tanpa batas.
- Periksa log proxy jika kamu mengelola infrastrukturnya sendiri.
FAQ HTTP CONNECT Proxy
Apa itu HTTP CONNECT?
HTTP CONNECT adalah metode yang meminta proxy membuat tunnel menuju hostname dan port tertentu. Setelah proxy mengembalikan respons sukses, data dapat diteruskan melalui tunnel tersebut.
Apakah HTTPS melalui HTTP proxy menggunakan CONNECT?
Umumnya iya. Client meminta HTTP proxy membuka tunnel ke server tujuan, biasanya pada port 443, kemudian TLS berjalan melalui tunnel tersebut.
Apa arti 200 Connection Established?
Respons tersebut menunjukkan proxy berhasil membuat tunnel menuju destination dan koneksi dapat masuk ke tahap berikutnya.
Apa arti error 407 Proxy Authentication Required?
Error 407 berarti proxy membutuhkan autentikasi atau credential proxy yang diberikan tidak diterima. Periksa username, password, dan metode autentikasi proxy.
Apa beda 401 dan 407?
401 biasanya berkaitan dengan autentikasi pada website atau server tujuan, sedangkan 407 berkaitan dengan autentikasi pada proxy server.
Kenapa CONNECT ke port 443 berhasil tetapi port lain gagal?
Proxy dapat membatasi port yang boleh digunakan untuk tunneling. Port 443 umum diizinkan, sedangkan port lain dapat diblokir berdasarkan policy keamanan.
Apakah proxy bisa membaca isi HTTPS setelah CONNECT?
Pada tunnel TLS biasa yang tidak melakukan TLS inspection, isi aplikasi HTTPS tetap berada di dalam enkripsi TLS. Proxy tetap mengetahui destination yang diminta melalui CONNECT dan metadata koneksi lainnya.
Bagaimana cara mengecek CONNECT menggunakan cURL?
Gunakan cURL dengan opsi verbose dan proxy, misalnya curl -v -x http://IP:PORT https://example.com/. Output akan menunjukkan request CONNECT dan response dari proxy.
Apakah HTTP CONNECT sama dengan SOCKS5?
Tidak. CONNECT merupakan bagian dari HTTP, sedangkan SOCKS5 adalah protokol proxy tersendiri. Keduanya dapat digunakan untuk membuat koneksi melalui server perantara, tetapi mekanismenya berbeda.
Apakah HTTP CONNECT sama dengan VPN?
Tidak. CONNECT biasanya digunakan untuk tunnel koneksi tertentu melalui HTTP proxy, sementara VPN menggunakan mekanisme tunneling dan routing jaringan yang berbeda serta dapat mempunyai cakupan lebih luas.
