Kembali ke blog

Integrasi Proxy dengan Klien REST API: Pengaturan Postman, Insomnia, cURL, dan HTTPie

Panduan lengkap untuk mengatur proxy di klien REST API populer: Postman, Insomnia, cURL, dan HTTPie. Instruksi langkah demi langkah dengan contoh untuk pengembang.

📅15 Februari 2026
```html

Saat mengembangkan dan menguji API, sering kali ada kebutuhan untuk mengirim permintaan melalui server proxy. Ini mungkin diperlukan untuk menghindari batasan geografis, menguji perilaku API dari berbagai wilayah, memastikan anonimitas, atau bekerja dengan layanan yang memblokir IP pusat data. Dalam panduan ini, kita akan membahas cara mengatur proxy dengan benar di klien REST API populer dan menghindari kesalahan umum.

Kita akan melihat empat alat paling populer untuk bekerja dengan API: Postman (antarmuka grafis untuk sebagian besar pengembang), Insomnia (alternatif modern dengan UI yang nyaman), cURL (alat baris perintah klasik), dan HTTPie (klien CLI modern dengan sintaks yang mudah dibaca). Untuk setiap alat, kami akan memberikan contoh kode dan membahas fitur konfigurasi.

Jenis proxy yang cocok untuk bekerja dengan API

Sebelum mengatur proxy di klien API, penting untuk memahami jenis proxy yang cocok untuk tugas Anda. Klien REST API mendukung dua protokol utama: HTTP/HTTPS dan SOCKS5. Pilihan tergantung pada persyaratan API tertentu dan tingkat keamanan yang Anda butuhkan.

Proxy HTTP/HTTPS bekerja pada tingkat protokol HTTP dan sangat cocok untuk sebagian besar permintaan REST API. Mereka memahami struktur lalu lintas HTTP, dapat menyimpan cache respons, dan memodifikasi header. Proxy HTTPS juga mengenkripsi koneksi antara klien dan server proxy, yang penting saat mentransfer data sensitif, seperti kunci API atau token otorisasi.

Proxy SOCKS5 bekerja pada tingkat yang lebih rendah dan mentransfer semua jenis lalu lintas tanpa modifikasi. Mereka lebih lambat daripada proxy HTTP, tetapi memberikan anonimitas yang lebih baik dan cocok untuk situasi di mana API menggunakan protokol non-standar atau memerlukan transparansi penuh dari koneksi. SOCKS5 juga mendukung lalu lintas UDP, meskipun untuk REST API ini jarang diperlukan.

Rekomendasi: Untuk bekerja dengan sebagian besar API publik (GitHub, Stripe, Twilio, Google Maps), cukup gunakan proxy HTTP/HTTPS. Jika API memblokir permintaan dari IP pusat data, gunakan proxy residensial — mereka memiliki IP pengguna nyata dan lebih jarang terkena pemblokiran.

Jenis Proxy Protokol Kecepatan Kapan digunakan
Datacenter HTTP HTTP/HTTPS Sangat tinggi Pengujian, pengembangan, API tanpa batasan geo
Residential HTTP HTTP/HTTPS Sedang API dengan perlindungan terhadap bot, geo-targeting
Mobile HTTP HTTP/HTTPS Sedang API mobile, media sosial
SOCKS5 SOCKS5 Rendah Anonimitas maksimum, protokol non-standar

Pengaturan proxy di Postman: pengaturan global dan lokal

Postman adalah alat grafis paling populer untuk bekerja dengan REST API, digunakan oleh jutaan pengembang. Ia mendukung dua cara untuk mengatur proxy: pengaturan global (berlaku untuk semua permintaan) dan pengaturan pada tingkat lingkungan (environment). Mari kita bahas kedua opsi secara rinci.

Pengaturan global proxy di Postman

Pengaturan global proxy berada di menu Settings (ikon roda gigi di sudut kanan atas). Cara ini nyaman ketika Anda ingin semua permintaan dari Postman selalu melalui satu server proxy yang sama. Berikut adalah instruksi langkah demi langkah:

  1. Buka Postman dan klik ikon roda gigi (Settings) di sudut kanan atas
  2. Pindah ke tab "Proxy"
  3. Aktifkan opsi "Add a custom proxy configuration"
  4. Pilih jenis proxy: HTTP, HTTPS, atau SOCKS5
  5. Masukkan alamat server proxy (misalnya: proxy.example.com)
  6. Tentukan port (biasanya 8080 untuk HTTP, 1080 untuk SOCKS5)
  7. Jika proxy memerlukan otentikasi, aktifkan "Proxy Auth" dan masukkan login/kata sandi
  8. Klik "Save" dan tutup jendela pengaturan

Setelah itu, semua permintaan dari Postman akan otomatis melalui proxy yang ditentukan. Fitur penting: Postman juga mengirim telemetri dan memeriksa pembaruan melalui proxy, yang dapat menciptakan lalu lintas tambahan. Jika Anda menggunakan proxy dengan batasan lalu lintas, ini perlu diperhatikan.

Pengaturan proxy melalui variabel lingkungan

Cara yang lebih fleksibel adalah menggunakan variabel lingkungan (Environments). Ini memungkinkan Anda untuk dengan cepat beralih antara berbagai proxy untuk proyek atau API yang berbeda. Buat lingkungan baru dan tambahkan variabel berikut:

PROXY_HOST = proxy.example.com
PROXY_PORT = 8080
PROXY_USER = your_username
PROXY_PASS = your_password

Kemudian di pengaturan global proxy, gunakan variabel ini alih-alih nilai spesifik: {{PROXY_HOST}} dan {{PROXY_PORT}}. Sekarang Anda dapat membuat beberapa lingkungan (misalnya, "Production Proxy", "Testing Proxy", "US Proxy") dan beralih di antara mereka dengan satu klik.

Menggunakan proxy sistem

Postman juga dapat menggunakan pengaturan proxy sistem operasi Anda. Untuk ini, di pengaturan Proxy, pilih opsi "Use System Proxy". Ini nyaman jika Anda sudah mengatur proxy di tingkat OS (misalnya, melalui pengaturan Windows atau macOS) dan ingin agar Postman menggunakan pengaturan yang sama dengan browser.

Penting: Saat menggunakan proxy sistem, Postman mungkin mengabaikan pengaturan untuk localhost dan 127.0.0.1. Jika Anda menguji API lokal melalui proxy, gunakan konfigurasi khusus alih-alih sistem.

Konfigurasi proxy di Insomnia

Insomnia adalah alternatif modern untuk Postman dengan antarmuka yang bersih dan sumber terbuka. Pengaturan proxy di Insomnia sedikit berbeda dari Postman dan memerlukan pengeditan file konfigurasi atau penggunaan variabel lingkungan. Mari kita bahas kedua cara tersebut.

Pengaturan melalui variabel lingkungan

Cara termudah untuk mengatur proxy di Insomnia adalah dengan menggunakan variabel lingkungan standar HTTP_PROXY dan HTTPS_PROXY. Insomnia secara otomatis membaca variabel ini dari sistem. Atur mereka sebelum menjalankan Insomnia:

Linux/macOS:

export HTTP_PROXY="http://username:password@proxy.example.com:8080"
export HTTPS_PROXY="http://username:password@proxy.example.com:8080"
insomnia

Windows (PowerShell):

$env:HTTP_PROXY = "http://username:password@proxy.example.com:8080"
$env:HTTPS_PROXY = "http://username:password@proxy.example.com:8080"
insomnia

Perhatikan format URL: bahkan untuk proxy HTTPS, skema http:// digunakan, bukan https://. Ini adalah kesepakatan standar untuk variabel lingkungan proxy. Jika proxy tidak memerlukan otentikasi, URL akan lebih pendek: http://proxy.example.com:8080.

Pengaturan proxy SOCKS5

Untuk proxy SOCKS5, gunakan variabel lingkungan ALL_PROXY:

export ALL_PROXY="socks5://username:password@proxy.example.com:1080"

Insomnia mendukung SOCKS5, tetapi tidak semua versi menangani otentikasi SOCKS5 dengan benar. Jika Anda mengalami masalah dengan SOCKS5 yang memerlukan otentikasi, coba gunakan proxy HTTP atau perbarui Insomnia ke versi terbaru.

Pengaturan melalui file konfigurasi

Untuk pengaturan proxy yang permanen, Anda dapat mengedit file konfigurasi Insomnia. Lokasi file tergantung pada sistem operasi:

  • Windows: %APPDATA%\Insomnia\config.json
  • macOS: ~/Library/Application Support/Insomnia/config.json
  • Linux: ~/.config/Insomnia/config.json

Buka file di editor teks dan tambahkan bagian proxy:

{
  "proxy": {
    "http": "http://username:password@proxy.example.com:8080",
    "https": "http://username:password@proxy.example.com:8080"
  }
}

Setelah mengedit, restart Insomnia. Pengaturan proxy akan diterapkan ke semua permintaan secara otomatis.

Menggunakan proxy di cURL: contoh perintah

cURL adalah alat baris perintah klasik untuk bekerja dengan HTTP, yang terpasang di hampir semua sistem mirip Unix dan Windows 10+. Ia mendukung proxy melalui parameter -x atau --proxy. Mari kita lihat berbagai skenario penggunaan.

Penggunaan dasar proxy HTTP

Contoh paling sederhana menggunakan proxy HTTP tanpa otentikasi:

curl -x http://proxy.example.com:8080 https://api.example.com/users

Parameter -x menunjukkan alamat dan port server proxy. cURL secara otomatis akan menentukan bahwa ini adalah proxy HTTP dan mengatur koneksi. Jika Anda ingin secara eksplisit menentukan protokol, gunakan URL lengkap:

curl --proxy http://proxy.example.com:8080 https://api.example.com/users

Proxy dengan otentikasi

Jika proxy memerlukan otentikasi dengan login dan kata sandi, tambahkan mereka ke URL proxy atau gunakan parameter -U:

# Metode 1: login dan kata sandi dalam URL
curl -x http://username:password@proxy.example.com:8080 https://api.example.com/users

# Metode 2: parameter -U (lebih aman, tidak disimpan dalam riwayat perintah)
curl -x http://proxy.example.com:8080 -U username:password https://api.example.com/users

Metode kedua lebih disukai, karena login dan kata sandi tidak akan masuk ke dalam riwayat perintah shell. Untuk keamanan lebih, Anda dapat hanya menyebutkan login, dan cURL akan meminta kata sandi secara interaktif:

curl -x http://proxy.example.com:8080 -U username https://api.example.com/users
# cURL akan meminta kata sandi: Enter proxy password for user 'username':

Menggunakan proxy SOCKS5

Untuk proxy SOCKS5, secara eksplisit tentukan protokol dalam URL:

# SOCKS5 tanpa otentikasi
curl -x socks5://proxy.example.com:1080 https://api.example.com/users

# SOCKS5 dengan otentikasi
curl -x socks5://username:password@proxy.example.com:1080 https://api.example.com/users

# SOCKS5h (resolusi DNS melalui proxy)
curl -x socks5h://proxy.example.com:1080 https://api.example.com/users

Perbedaan antara socks5:// dan socks5h://: pada kasus pertama, resolusi DNS terjadi secara lokal (di mesin Anda), pada kasus kedua — melalui server proxy. Gunakan socks5h:// jika Anda ingin sepenuhnya menyembunyikan permintaan DNS dari penyedia Anda.

Permintaan POST melalui proxy

Proxy berfungsi sama untuk semua metode HTTP. Contoh permintaan POST dengan data JSON melalui proxy:

curl -x http://proxy.example.com:8080 \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"name":"John","email":"john@example.com"}' \
  https://api.example.com/users

Untuk mengirim file, gunakan parameter -F:

curl -x http://proxy.example.com:8080 \
  -X POST \
  -F "file=@document.pdf" \
  -F "description=Important document" \
  https://api.example.com/upload

Menggunakan variabel lingkungan

Alih-alih menentukan proxy di setiap perintah, Anda dapat menggunakan variabel lingkungan. cURL secara otomatis membaca http_proxy, https_proxy, dan all_proxy:

# Atur variabel lingkungan
export http_proxy="http://username:password@proxy.example.com:8080"
export https_proxy="http://username:password@proxy.example.com:8080"

# Sekarang semua perintah cURL secara otomatis menggunakan proxy
curl https://api.example.com/users

# Nonaktifkan proxy untuk perintah tertentu
curl --noproxy "*" https://api.example.com/users

Parameter --noproxy memungkinkan Anda untuk mengecualikan domain tertentu dari penggunaan proxy. Misalnya, untuk tidak menggunakan proxy untuk localhost dan domain internal:

export no_proxy="localhost,127.0.0.1,.internal.company.com"

Pengaturan proxy di HTTPie

HTTPie adalah alternatif modern untuk cURL dengan sintaks yang mudah dibaca dan output berwarna. Ini sangat nyaman untuk bekerja interaktif dengan API di terminal. HTTPie mendukung proxy melalui parameter --proxy atau variabel lingkungan.

Penggunaan dasar proxy

Sintaks HTTPie untuk proxy sedikit berbeda dari cURL. Anda perlu menentukan protokol dan URL proxy secara terpisah:

# Proxy HTTP
http --proxy=http:http://proxy.example.com:8080 \
     --proxy=https:http://proxy.example.com:8080 \
     GET https://api.example.com/users

# Bentuk singkat (jika proxy sama untuk HTTP dan HTTPS)
http --proxy=all:http://proxy.example.com:8080 GET https://api.example.com/users

Format: --proxy=protocol:proxy_url. Untuk permintaan HTTPS, biasanya digunakan proxy HTTP (bukan HTTPS), ini adalah perilaku standar.

Proxy dengan otentikasi

Untuk otentikasi, tambahkan login dan kata sandi ke URL proxy:

http --proxy=all:http://username:password@proxy.example.com:8080 \
     GET https://api.example.com/users

HTTPie juga mendukung parameter --proxy-auth untuk secara lebih eksplisit menunjukkan kredensial, tetapi di versi terbaru parameter ini dianggap usang, dan disarankan untuk menyertakan otentikasi dalam URL.

Proxy SOCKS5 di HTTPie

HTTPie mendukung proxy SOCKS5 mulai versi 2.0.0. Pastikan Anda memiliki versi terbaru:

# Periksa versi HTTPie
http --version

# Perbarui HTTPie melalui pip
pip install --upgrade httpie

# Menggunakan proxy SOCKS5
http --proxy=all:socks5://proxy.example.com:1080 GET https://api.example.com/users

Untuk SOCKS5 dengan otentikasi, Anda perlu menginstal pustaka tambahan pysocks:

pip install pysocks
http --proxy=all:socks5://username:password@proxy.example.com:1080 \
     GET https://api.example.com/users

Permintaan POST dan pengiriman data

HTTPie memiliki sintaks yang nyaman untuk permintaan POST. Contoh mengirim JSON melalui proxy:

# POST dengan JSON (HTTPie secara otomatis menentukan Content-Type)
http --proxy=all:http://proxy.example.com:8080 \
     POST https://api.example.com/users \
     name="John Doe" \
     email="john@example.com" \
     age:=30

# Mengirim file
http --proxy=all:http://proxy.example.com:8080 \
     POST https://api.example.com/upload \
     file@document.pdf \
     description="Important document"

Perhatikan sintaksnya: key=value untuk string, key:=value untuk angka dan nilai boolean, key@file untuk file.

Menggunakan variabel lingkungan

Seperti cURL, HTTPie membaca variabel lingkungan standar http_proxy dan https_proxy:

export http_proxy="http://username:password@proxy.example.com:8080"
export https_proxy="http://username:password@proxy.example.com:8080"

# Sekarang semua perintah secara otomatis menggunakan proxy
http GET https://api.example.com/users

Untuk menonaktifkan proxy sementara, gunakan parameter --proxy= (nilai kosong):

http --proxy= GET https://api.example.com/users

Otentikasi proxy: login dan kata sandi

Sebagian besar layanan proxy komersial memerlukan otentikasi untuk melindungi dari penggunaan yang tidak sah. Ada dua metode utama otentikasi: Otentikasi Dasar (login/kata sandi) dan Daftar Putih IP (ikatan ke alamat IP). Mari kita bahas fitur masing-masing metode dan bagaimana cara mengaturnya dengan benar di klien API.

Otentikasi Dasar (login dan kata sandi)

Otentikasi Dasar adalah metode yang paling umum. Server proxy meminta login dan kata sandi pada setiap koneksi. Kredensial dikirim dalam header Proxy-Authorization dalam format Base64. Semua klien API modern secara otomatis membentuk header ini jika Anda menyertakan login dan kata sandi dalam URL proxy.

Format URL dengan otentikasi:

protocol://username:password@proxy_host:proxy_port

Contoh untuk berbagai protokol:

# Proxy HTTP
http://user123:pass456@proxy.example.com:8080

# Proxy HTTPS (menggunakan format yang sama)
http://user123:pass456@proxy.example.com:8080

# Proxy SOCKS5
socks5://user123:pass456@proxy.example.com:1080

Keamanan: Jangan pernah menyimpan kata sandi proxy dalam bentuk terbuka di skrip atau file konfigurasi yang masuk ke sistem kontrol versi (Git). Gunakan variabel lingkungan atau file dengan hak akses terbatas (chmod 600).

Daftar Putih IP (ikatan ke IP)

Beberapa penyedia proxy menawarkan otentikasi berdasarkan alamat IP. Dalam hal ini, Anda menambahkan IP Anda ke daftar putih di panel kontrol proxy, dan server hanya mengizinkan koneksi dari IP tersebut tanpa login dan kata sandi. Ini lebih nyaman dan aman, karena tidak perlu mengirim kredensial di setiap permintaan.

Saat menggunakan Daftar Putih IP, format URL proxy menjadi lebih sederhana:

# Tanpa login dan kata sandi
http://proxy.example.com:8080

# Contoh di cURL
curl -x http://proxy.example.com:8080 https://api.example.com/users

Kekurangan metode ini adalah jika IP Anda dinamis (berubah saat terhubung kembali ke internet), Anda harus memperbarui daftar putih setiap kali. Untuk server dengan IP statis, ini adalah pilihan yang ideal.

Karakter khusus dalam kata sandi

Jika kata sandi proxy mengandung karakter khusus (@, :, /, ?), mereka perlu dikodekan dalam format URL encoding (percent encoding). Misalnya:

Simbol URL-encoding Contoh
@ %40 pass@123 → pass%40123
: %3A pass:word → pass%3Aword
/ %2F pass/123 → pass%2F123
? %3F pass?123 → pass%3F123
# %23 pass#123 → pass%23123
spasi %20 my pass → my%20pass

Contoh penggunaan kata sandi dengan karakter khusus:

# Kata sandi asli: P@ss:w0rd/123
# Kata sandi yang dikodekan: P%40ss%3Aw0rd%2F123

curl -x http://username:P%40ss%3Aw0rd%2F123@proxy.example.com:8080 \
     https://api.example.com/users

Untuk pengkodean otomatis, Anda dapat menggunakan alat online URL encoder atau perintah di Python:

python3 -c "import urllib.parse; print(urllib.parse.quote('P@ss:w0rd/123'))"
# Output: P%40ss%3Aw0rd%2F123

Memecahkan masalah dan kesalahan umum

Saat bekerja dengan proxy di klien API, sering kali muncul kesalahan umum. Mari kita bahas masalah yang paling umum dan cara menyelesaikannya.

Kesalahan "407 Proxy Authentication Required"

Kesalahan ini berarti server proxy memerlukan otentikasi, tetapi kredensial tidak diberikan atau salah. Solusi:

  • Periksa keakuratan login dan kata sandi di panel kontrol penyedia proxy
  • Pastikan karakter khusus dalam kata sandi telah dikodekan (lihat bagian di atas)
  • Periksa format URL: http://username:password@host:port
  • Jika menggunakan Daftar Putih IP, pastikan IP Anda saat ini ditambahkan ke daftar putih

Contoh diagnosis di cURL dengan output terperinci:

curl -v -x http://username:password@proxy.example.com:8080 https://api.example.com/users
# Flag -v (verbose) akan menunjukkan semua header dan proses otentikasi

Kesalahan "Connection timeout" atau "Failed to connect"

Kesalahan ini terjadi ketika klien API tidak dapat membuat koneksi dengan server proxy. Kemungkinan penyebab:

  • Alamat atau port server proxy salah — periksa pengaturan dengan penyedia
  • Server proxy tidak tersedia atau kelebihan beban — coba server lain dari daftar
  • Firewall Anda memblokir koneksi keluar ke port proxy
  • Penyedia proxy memblokir IP Anda karena melebihi batas

Untuk diagnosis, coba sambungkan ke proxy secara langsung melalui telnet atau nc:

# Memeriksa ketersediaan proxy
telnet proxy.example.com 8080
# atau
nc -zv proxy.example.com 8080

# Jika koneksi tidak dapat dibuat, masalah ada di jaringan atau server proxy tidak tersedia

Kesalahan "SSL certificate problem"

Saat menggunakan proxy HTTPS, mungkin ada masalah dengan verifikasi sertifikat SSL. Ini terutama berlaku untuk proxy MITM (Man-in-the-Middle) yang mencegat dan mendekripsi lalu lintas HTTPS. Solusi:

  • Di cURL, gunakan flag -k atau --insecure untuk menonaktifkan verifikasi sertifikat (hanya untuk pengujian!)
  • Di Postman, nonaktifkan "SSL certificate verification" di Settings → General
  • Instal sertifikat root proxy di sistem (untuk lingkungan produksi)
# Nonaktifkan verifikasi sertifikat SSL
```