Socks5Proxy

Cara menggunakan cURL dengan proxy, verifikasi HTTP dan SOCKS5 proxy dari baris perintah

Panduan ini menjelaskan cara menghubungkan HTTP proxy dan SOCKS5 proxy Socks5Proxy dengan cURL, autentikasi username dan password, pengukuran waktu respons, dan skrip shell untuk memeriksa seluruh daftar sekaligus.

Mengapa baik menguji proxy dengan cURL?

cURL terinstal di hampir semua server dan lingkungan pengembangan, menjadikannya alat tercepat untuk memverifikasi apakah proxy berfungsi dengan benar. Jika ada masalah dalam kode atau pengaturan browser, menguji baris yang sama dengan cURL dapat segera membedakan apakah masalahnya ada pada proxy atau kode.

Contoh menggunakan IP 198.51.100.23, port HTTP 8000, port SOCKS5 1080, username spx_user, password spx_pass.

Bagaimana cara menghubungkan HTTP proxy?

Masukkan alamat proxy ke opsi -x (atau --proxy). Username dan password dapat dimasukkan dalam alamat atau dipisahkan dengan opsi -U. Saat meminta alamat HTTPS, cURL akan membuat terowongan CONNECT dan mengirim permintaan terenkripsi di dalamnya.

# user and password inside the proxy URL
curl -x http://spx_user:spx_pass@198.51.100.23:8000 https://api.ipify.org

# or with -U
curl -x http://198.51.100.23:8000 -U spx_user:spx_pass https://api.ipify.org

Bagaimana cara menghubungkan proxy SOCKS5?

--socks5-hostname melakukan resolusi DNS melalui proxy. Permintaan DNS dari server Anda tidak terlihat di luar, dan nama akan diresolusi berdasarkan negara tempat proxy berada. --socks5 melakukan resolusi nama di server Anda sebelum mengirim hanya IP ke proxy. Sebagian besar kasus, --socks5-hostname direkomendasikan.

Format alamat socks5h:// juga memberikan hasil yang sama saat digunakan dengan -x.

# DNS is resolved by the proxy
curl --socks5-hostname 198.51.100.23:1080 --proxy-user spx_user:spx_pass https://api.ipify.org

# same thing with a proxy URL
curl -x socks5h://spx_user:spx_pass@198.51.100.23:1080 https://api.ipify.org

Bagaimana cara melihat waktu respons dan status sekaligus?

Gunakan opsi -w untuk menampilkan waktu koneksi, waktu hingga byte pertama, waktu total, dan kode respons dalam satu baris. Berguna untuk membandingkan kecepatan proxy dari berbagai negara atau menentukan apakah situs target atau proxy yang lambat.

Gunakan -o /dev/null untuk membuang body dan -s untuk mematikan progress bar, sehingga hanya hasil yang ditampilkan dengan rapi.

curl -s -o /dev/null \
  -x http://spx_user:spx_pass@198.51.100.23:8000 \
  -w "code=%{http_code} connect=%{time_connect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n" \
  https://example.com/

Bagaimana cara memeriksa seluruh daftar sekaligus?

Dengan mengambil daftar melalui API dan menjalankan cURL per baris, Anda bisa memeriksa status semua proxy sekaligus. Skrip berikut mengambil daftar dalam format ip:port:user:pass dan mencetak IP respons serta waktu yang dibutuhkan per baris. Batas waktu ditambahkan agar tidak berhenti di baris yang tidak merespons.

#!/bin/sh
KEY="YOUR_API_KEY"
curl -s -H "Authorization: Bearer $KEY" \
  "https://socks5proxy.io/api/v1/proxies/download?format=ip:port:user:pass&protocol=http" > proxies.txt

while IFS=: read -r ip port user pass; do
  out=$(curl -s -m 15 -x "http://$user:$pass@$ip:$port" -w " %{time_total}s" https://api.ipify.org)
  echo "$ip:$port $out"
done < proxies.txt

Apakah API bisa dipanggil dengan cURL?

Ya. Cek saldo, daftar paket aktif, dan daftar proxy semuanya menggunakan header Authorization: Bearer. Respons JSON dapat difilter dengan alat seperti jq.

curl -H "Authorization: Bearer YOUR_API_KEY" https://socks5proxy.io/api/v1/account
curl -H "Authorization: Bearer YOUR_API_KEY" "https://socks5proxy.io/api/v1/proxies?country=us&protocol=socks5"

Apakah proxy juga bisa diatur melalui variabel lingkungan?

Ya. cURL dan banyak alat CLI membaca variabel lingkungan http_proxy, https_proxy, all_proxy. Setel di shell untuk penggunaan seragam oleh cURL, wget, pip. Untuk SOCKS5, gunakan all_proxy dengan format socks5h://.

Tulis alamat yang tidak boleh melewati proxy di no_proxy, dipisahkan koma. Ini mencegah permintaan ke server internal atau localhost keluar melalui proxy.

export https_proxy="http://spx_user:spx_pass@198.51.100.23:8000"
export http_proxy="$https_proxy"
export no_proxy="localhost,127.0.0.1"
curl https://api.ipify.org

# SOCKS5 for every tool that reads all_proxy
export all_proxy="socks5h://spx_user:spx_pass@198.51.100.23:1080"

Bagaimana membandingkan hasil HTTP proxy dan SOCKS5 proxy?

Dengan membandingkan respons dari dua port IP yang sama, Anda bisa melihat metode mana lebih cepat di lingkungan Anda. Biasanya mirip, tapi bisa berbeda jika server jauh atau DNS lambat.

IP respons harus sama untuk kedua metode. Jika berbeda, mungkin Anda menggunakan port dari baris yang berbeda, harap periksa kembali daftarnya.

for p in "http://spx_user:spx_pass@198.51.100.23:8000" "socks5h://spx_user:spx_pass@198.51.100.23:1080"; do
  curl -s -m 15 -x "$p" -w "  %{time_total}s\n" https://api.ipify.org
done

Bagaimana server memverifikasi IP untuk otorisasi IP?

Nilai yang didaftarkan untuk IP authorization adalah IPv4 publik yang digunakan server Anda untuk mengakses internet. Jalankan curl -4 https://api.ipify.org tanpa proxy untuk melihat nilai ini langsung. Daftarkan nilai ini di kolom IP authorization dashboard, maka server tersebut bisa terhubung tanpa username dan password.

curl -4 -s https://api.ipify.org

Bisakah proxy melihat konten situs HTTPS?

Saat meminta alamat HTTPS melalui HTTP proxy, cURL pertama membuat tunnel CONNECT ke server target, lalu membangun koneksi terenkripsi langsung di dalamnya. Proxy hanya tahu server tujuan, tidak bisa melihat konten yang terenkripsi. Opsi -v menampilkan proses CONNECT dan koneksi enkripsi.

Sama untuk SOCKS5. Proxy hanya meneruskan koneksi, enkripsi terjadi antara cURL dan server target. Sebaiknya tidak menggunakan opsi verifikasi sertifikat (-k) karena sertifikat server target tetap diverifikasi meskipun melalui proxy.

Dengan --socks5-hostname, nama domain yang ingin diakses juga diresolusi oleh proxy, sehingga tidak ada catatan permintaan DNS di server Anda.

curl -v -o /dev/null -x http://spx_user:spx_pass@198.51.100.23:8000 https://example.com/ 2>&1 | grep -E "CONNECT|HTTP/|SSL connection"

Bagaimana cara membaca pesan kesalahan cURL?

Received HTTP code 407 from proxy after CONNECT menunjukkan kegagalan autentikasi. Periksa username dan password, atau IP server yang terdaftar di IP authorization. Jika password mengandung @ atau :, jangan masukkan ke dalam alamat, gunakan -U atau --proxy-user sebagai gantinya.

Failed to connect atau Connection timed out biasanya karena port tidak sesuai atau firewall server memblokir koneksi keluar. Gunakan port HTTP untuk alamat HTTP dan port SOCKS5 untuk SOCKS5, pastikan port arah keluar terbuka. Opsi -v menampilkan proses koneksi langkah demi langkah untuk memudahkan diagnosa.

Cara menggunakan cURL dengan proxy, verifikasi koneksi SOCKS5 dengan -x | Socks5Proxy