Panduan5 menit baca

Proxy di curl dan wget: perintah, SOCKS5, dan HTTP_PROXY

Cara pakai residential proxy di curl dan wget: opsi -x, SOCKS5 dengan DNS jarak jauh, variabel HTTP_PROXY dan NO_PROXY, sesi sticky, serta tips hemat kuota.

curl dan wget adalah cara tercepat untuk mengetes proxy, mengambil satu halaman, atau menjalankan skrip shell terjadwal. Panduan ini berisi perintah yang bisa langsung kamu salin: proxy HTTP dan SOCKS5 di curl, pengaturan proxy di wget, variabel environment HTTP_PROXY yang juga dibaca banyak alat lain, plus cara memeriksa hasilnya dan menjaga pemakaian GB tetap kecil.

Semua contoh memakai endpoint proxy.waroengproxy.com:8000. Ganti USERNAME dan PASSWORD dengan kredensial dari kartu Proxy credentials di dashboard, atau rakit baris lengkapnya di Generator proxy.

Format kredensial yang dipakai

Satu baris proxy terdiri dari username, password, host, dan port. Target lokasi dan sesi ditulis sebagai tambahan di belakang username, dipisah tanda minus. Host, port, dan password tidak pernah berubah.

  • USERNAME:PASSWORD@proxy.waroengproxy.com:8000 untuk IP acak (rotating) dari seluruh jaringan.
  • USERNAME-cc-ID:PASSWORD@proxy.waroengproxy.com:8000 untuk IP Indonesia.
  • USERNAME-cc-ID-s-sesi1-ttl-600:PASSWORD@proxy.waroengproxy.com:8000 untuk IP Indonesia yang sama selama 600 detik (sticky).

Daftar lengkap parameter seperti kota (ct), ISP (isp), dan zona waktu (tz) ada di dokumentasi dan di artikel target negara, kota, sampai ISP.

curl dengan proxy HTTP

Opsi -x (atau --proxy) memberi tahu curl untuk lewat proxy. Situs https:// tetap terenkripsi dari ujung ke ujung: curl membuka terowongan lewat proxy, lalu bicara TLS langsung dengan situs tujuan.

Terminal
# IP acak, tampilkan IP dan lokasi yang dilihat situs
curl -x "http://USERNAME:PASSWORD@proxy.waroengproxy.com:8000" https://ipinfo.io/json
# IP Indonesia, kredensial dipisah dengan -U
curl -x "http://proxy.waroengproxy.com:8000" -U "USERNAME-cc-ID:PASSWORD" https://ipinfo.io/json
# Windows PowerShell: pakai curl.exe, bukan alias curl
curl.exe -x "http://USERNAME-cc-ID:PASSWORD@proxy.waroengproxy.com:8000" https://ipinfo.io/json

Kalau password-mu mengandung karakter khusus seperti @, :, atau #, tulis dalam bentuk URL-encoded saat ditaruh di dalam URL (misalnya @ menjadi %40), atau pakai -U supaya tidak perlu di-encode.

curl dengan SOCKS5 dan DNS lewat proxy

Endpoint yang sama juga melayani SOCKS5. Di curl, perhatikan beda socks5:// dan socks5h://:

  • socks5:// membuat komputermu sendiri yang mencari alamat IP situs tujuan (DNS lokal), baru kemudian menyambung lewat proxy.
  • socks5h:// mengirim nama domain ke proxy, sehingga pencarian DNS terjadi di sisi proxy. Ini yang umumnya kamu mau: DNS tidak bocor ke jaringanmu, dan situs yang memakai CDN berbasis lokasi menjawab sesuai negara IP proxy.
Terminal
curl -x "socks5h://USERNAME-cc-ID:PASSWORD@proxy.waroengproxy.com:8000" https://ipinfo.io/json
# bentuk lain yang setara
curl --socks5-hostname proxy.waroengproxy.com:8000 --proxy-user "USERNAME-cc-ID:PASSWORD" https://ipinfo.io/json

Bingung pilih HTTP atau SOCKS5? Untuk curl, keduanya sama-sama jalan. Perbandingan lengkapnya ada di artikel HTTP, HTTPS, atau SOCKS5.

Sesi sticky dan rotating di skrip shell

Dalam mode rotating, setiap koneksi baru bisa mendapat IP berbeda. Karena tiap perintah curl membuka koneksi baru, menjalankan curl dua kali biasanya memberi dua IP. Kalau beberapa permintaan harus terlihat dari IP yang sama, misalnya login lalu membuka halaman berikutnya, tambahkan label sesi -s- dan lama sesi -ttl- dalam detik (1 sampai 86400, bawaan 60).

Terminal
#!/usr/bin/env bash
# satu sesi sticky untuk seluruh skrip
SESI="job$(date +%s)"
PROXY="http://USERNAME-cc-ID-s-$SESI-ttl-600:PASSWORD@proxy.waroengproxy.com:8000"
curl -s -x "$PROXY" https://ipinfo.io/ip
curl -s -x "$PROXY" https://ipinfo.io/ip # IP sama selama sesi masih berlaku

Label sesi yang sama berarti IP yang sama, jadi buat label baru untuk tiap tugas yang perlu IP sendiri. Penjelasan kapan memakai masing-masing mode ada di sticky atau rotating.

Pakai variabel HTTP_PROXY dan NO_PROXY

Daripada menulis -x di setiap perintah, kamu bisa mengatur proxy lewat variabel environment. curl, wget, dan banyak alat baris perintah lain membacanya otomatis.

Terminal
# Linux / macOS (bash, zsh)
export http_proxy="http://USERNAME-cc-ID:PASSWORD@proxy.waroengproxy.com:8000"
export https_proxy="$http_proxy"
export no_proxy="localhost,127.0.0.1"
curl https://ipinfo.io/json
unset http_proxy https_proxy no_proxy # matikan lagi
# Windows PowerShell (berlaku di jendela ini saja)
$env:HTTPS_PROXY = "http://USERNAME-cc-ID:PASSWORD@proxy.waroengproxy.com:8000"
curl.exe https://ipinfo.io/json
Remove-Item Env:HTTPS_PROXY
  • Untuk situs http://, curl hanya membaca http_proxy huruf kecil. Untuk situs https://, https_proxy dan HTTPS_PROXY sama-sama dibaca. Menulis huruf kecil adalah pilihan paling aman.
  • ALL_PROXY dipakai untuk semua protokol kalau variabel yang lebih spesifik tidak diisi, dan bisa diisi alamat socks5h://.
  • NO_PROXY berisi daftar host yang tidak lewat proxy, dipisah koma. Masukkan alamat lokal dan layanan internal supaya tidak ikut menghabiskan kuota.
  • Variabel yang di-export berlaku untuk semua program di terminal itu, termasuk pengelola paket dan git. Matikan setelah selesai kalau kamu tidak sengaja ingin semuanya lewat proxy.

wget dengan proxy

wget membaca variabel http_proxy dan https_proxy yang sama. Untuk satu perintah saja, pakai opsi -e. Alamat proxy tetap ditulis dengan awalan http://, juga untuk situs https://.

Contoh
wget -e use_proxy=yes \
-e https_proxy=http://proxy.waroengproxy.com:8000 \
--proxy-user="USERNAME-cc-ID" --proxy-password="PASSWORD" \
-O hasil.json https://ipinfo.io/json
# abaikan proxy untuk satu perintah meski variabel environment terisi
wget --no-proxy https://example.com/

Untuk pengaturan permanen, isi ~/.wgetrc dengan baris use_proxy = on, https_proxy = http://proxy.waroengproxy.com:8000/, proxy_user = USERNAME, dan proxy_password = PASSWORD. wget versi 1.x yang terpasang di kebanyakan sistem tidak mendukung SOCKS5, jadi pakai proxy HTTP untuk wget, atau beralih ke curl bila kamu perlu SOCKS5.

Cek hasil dan cari sumber masalah

Sebelum menjalankan skrip panjang, pastikan proxy tersambung dan lokasinya sesuai. Opsi -w di curl menampilkan kode status dan waktu koneksi, sedangkan -v memperlihatkan percakapan dengan proxy.

Terminal
curl -s -o /dev/null -x "http://USERNAME-cc-ID:PASSWORD@proxy.waroengproxy.com:8000" \
--connect-timeout 10 --max-time 30 \
-w "status=%{http_code} connect=%{time_connect}s total=%{time_total}s\n" \
https://example.com/
  • Di Windows, ganti /dev/null dengan NUL.
  • 407 Proxy Authentication Required berarti username atau password ditolak. Periksa salah ketik, tanda minus pada parameter, dan sisa kuota GB.
  • Timeout dengan --connect-timeout berarti koneksi ke proxy atau ke situs tujuan terlalu lama. Coba lagi dengan target lokasi yang lebih luas, misalnya negara saja tanpa kota.
  • Lokasi tidak sesuai di ipinfo.io bisa terjadi karena database lokasi IP berbeda-beda. Cek beberapa sampel sebelum menyimpulkan.

Daftar penyebab dan solusi yang lebih lengkap ada di panduan mengatasi error proxy.

Hemat kuota dari baris perintah

Kuota dihitung dari data yang lewat proxy, jadi ambil hanya yang kamu butuhkan:

  • Pakai -I (HEAD) kalau kamu cuma perlu kode status, header, atau lokasi redirect.
  • Tambahkan --compressed supaya server boleh mengirim isi terkompresi.
  • Arahkan unduhan besar dan berkas statis ke koneksi langsung lewat NO_PROXY atau --noproxy.
  • Hindari wget --mirror atau unduhan rekursif lewat proxy kecuali memang perlu. Selain boros GB, itu sering melanggar syarat layanan situs.
Pakai proxy dari baris perintah tetap ada aturannya: hormati syarat layanan dan robots.txt situs tujuan, beri jeda antar permintaan, dan jangan simpan password proxy di skrip yang ikut di-commit ke repositori. Simpan di variabel environment atau berkas konfigurasi yang tidak dibagikan.

Mulai dari satu perintah curl -x ke ipinfo.io, lalu pindahkan ke variabel environment atau skrip ketika alurnya sudah jalan. Belum punya akun? Buat akun tanpa email, isi saldo lewat QRIS, lalu pilih paket di halaman harga.