Skip to content
intermediate

Cara Menggunakan Proxy SOCKS5 Dataimpulse dengan curl di Linux

Arahkan curl dan alat baris perintah Linux lainnya melalui proxy residensial atau mobile SOCKS5 Dataimpulse, verifikasi IP keluar Anda, dan jalankan pengambilan batch dengan pembatasan laju.

Linux SOCKS5 Web Scraping Privasi/Anonimitas

Ikhtisar

Tutorial ini menunjukkan cara mengarahkan lalu lintas HTTP baris perintah melalui proxy residensial atau mobile Dataimpulse lewat SOCKS5 di Linux. Anda akan mengonfigurasi curl, memverifikasi IP keluar, menjalankan pengambilan batch kecil dengan pembatasan laju, dan menerapkan pengaturan yang sama ke alat CLI lainnya.

Dataimpulse menawarkan IP residensial dan mobile melalui HTTP dan SOCKS5 dengan penagihan bayar sesuai pemakaian, sehingga cukup cocok untuk pengumpulan data terjadwal bervolume tinggi. Teknik di bawah ini bersifat tingkat protokol dan netral terhadap vendor: setiap endpoint SOCKS5 berperilaku sama, dan Dataimpulse hanyalah penyedia yang digunakan untuk contoh-contoh ini.

Prasyarat

  • Host Linux (workstation, VM, atau container) dengan shell POSIX
  • curl yang dibangun dengan dukungan SOCKS5, plus jq untuk mengurai respons JSON
  • Akun Dataimpulse dengan saldo kredit yang sudah diisi
  • Host endpoint SOCKS5, port, username, dan password dari dasbor Dataimpulse

Sebelum Anda mulai

  • Kumpulkan hanya data yang Anda berwenang untuk kumpulkan. Hormati ketentuan layanan dan robots.txt setiap situs target, serta patuhi hukum yang berlaku bagi Anda.
  • Penagihan bayar sesuai pemakaian diukur berdasarkan lalu lintas, jadi percobaan ulang, respons besar, dan unduhan media semuanya menghabiskan kredit. Periksa tampilan penggunaan di dasbor selama Anda menguji.

Cara kerja endpoint SOCKS5

SOCKS5 adalah protokol proxy tingkat transport, sehingga ia membawa lalu lintas HTTPS tanpa mengakhiri TLS sendiri. Klien Anda menegosiasikan koneksi TCP melalui proxy, dan sertifikat target tetap divalidasi secara end to end.

Detail Di mana menemukannya Catatan
Host endpoint Dasbor Dataimpulse Gateway yang dihubungi klien Anda
Port SOCKS5 Dasbor Dataimpulse Biasanya tercantum terpisah dari port HTTP
Username Dasbor Dataimpulse Mungkin menyandikan opsi routing atau sesi
Password Dasbor Dataimpulse Perlakukan sebagai rahasia; jangan pernah di-commit ke kontrol versi

Dua bentuk alamat penting dalam praktik:

  • socks5:// — mesin Anda me-resolve nama host tujuan, lalu mengirimkan IP ke proxy.
  • socks5h:// — proxy yang me-resolve nama host. Ini menghindari kebocoran DNS lokal dan merupakan default yang lebih baik untuk pekerjaan pengumpulan data.

Langkah-langkah

1. Pasang alat baris perintah

sudo apt update
sudo apt install -y curl jq

Di Fedora atau RHEL, gunakan sudo dnf install -y curl jq. Di Arch, gunakan sudo pacman -S curl jq.

2. Pastikan dukungan SOCKS5 di curl

curl --help all | grep -i socks

Anda seharusnya melihat opsi seperti --socks5, --socks5-hostname, --socks4, dan --socks4a. Jika tidak ada yang tercantum, build curl Anda tidak memiliki dukungan SOCKS dan perlu ditingkatkan sebelum melanjutkan.

3. Simpan kredensial Anda dalam file yang dibatasi

Buat file dengan izin hanya untuk pemilik, lalu isi nilainya dari dasbor Dataimpulse Anda.

install -m 600 /dev/null "$HOME/.dataimpulse.env"
cat > "$HOME/.dataimpulse.env" <<'EOF'
export PROXY_HOST="your-endpoint-host"
export PROXY_PORT="your-socks5-port"
export PROXY_USER="your-username"
export PROXY_PASS="your-password"
EOF
chmod 600 "$HOME/.dataimpulse.env"

Pembatas heredoc yang dikutip mencegah shell mengekspansi apa pun, sehingga file ditulis secara literal. Jauhkan file ini dari repositori mana pun yang Anda sinkronkan atau publikasikan.

4. Muat variabel ke dalam shell Anda

source "$HOME/.dataimpulse.env"
printf 'Proxy endpoint: %s:%s\n' "$PROXY_HOST" "$PROXY_PORT"

Memuat dari file menjaga password agar tidak masuk ke baris perintah Anda, yang jika tidak akan tercatat dalam riwayat shell dan terlihat di daftar proses.

5. Kirim permintaan pertama Anda melalui proxy

curl --socks5-hostname "${PROXY_HOST}:${PROXY_PORT}" \
     --proxy-user "${PROXY_USER}:${PROXY_PASS}" \
     --silent --show-error --max-time 30 \
     "https://api.ipify.org?format=json"

Bentuk dengan satu URL setara dan lebih mudah dijadikan templat dalam skrip:

curl --proxy "socks5h://${PROXY_USER}:${PROXY_PASS}@${PROXY_HOST}:${PROXY_PORT}" \
     --silent --show-error --max-time 30 \
     "https://api.ipify.org?format=json"

Respons JSON yang berisi alamat IP berbeda dari milik Anda menandakan bahwa permintaan berhasil melewati proxy.

6. Verifikasi rotasi dan lokasi keluar

for i in 1 2 3; do
  curl --proxy "socks5h://${PROXY_USER}:${PROXY_PASS}@${PROXY_HOST}:${PROXY_PORT}" \
       --silent --show-error --max-time 30 \
       "https://api.ipify.org?format=json" | jq -r '.ip'
done

Alamat yang berbeda pada setiap permintaan berarti endpoint tersebut merotasi antar koneksi. Jika Anda melihat alamat yang sama setiap kali, periksa pengaturan sesi di dasbor Dataimpulse dan dokumentasinya tentang bagaimana keluar tetap versus berotasi dipilih untuk akun Anda.

7. Ambil halaman sungguhan dan catat kode responsnya

curl --proxy "socks5h://${PROXY_USER}:${PROXY_PASS}@${PROXY_HOST}:${PROXY_PORT}" \
     --silent --show-error --location --max-time 60 \
     --output page.html \
     --write-out 'status=%{http_code} bytes=%{size_download}\n' \
     "https://example.com/"

--write-out melaporkan kode status dan jumlah byte tanpa permintaan kedua, yang membantu Anda menghubungkan pengeluaran lalu lintas dengan hasil sebenarnya.

8. Jalankan pengambilan batch dengan pembatasan laju

Buat skrip bernama fetch-through-proxy.sh:

#!/usr/bin/env bash
set -euo pipefail

source "$HOME/.dataimpulse.env"
PROXY="socks5h://${PROXY_USER}:${PROXY_PASS}@${PROXY_HOST}:${PROXY_PORT}"

mkdir -p out
: > out/status.log

while IFS= read -r url; do
  [ -z "$url" ] && continue
  name="$(printf '%s' "$url" | sha256sum | cut -c1-12)"
  code="$(curl --proxy "$PROXY" \
               --silent --show-error \
               --location --max-time 60 \
               --retry 2 --retry-delay 5 \
               --output "out/${name}.html" \
               --write-out '%{http_code}' \
               "$url")" || code="error"
  printf '%s\t%s\n' "$code" "$url" | tee -a out/status.log
  sleep 2
done < targets.txt

Buat file itu dapat dieksekusi dan berikan daftar targetnya:

chmod +x fetch-through-proxy.sh
printf '%s\n' "https://example.com/" "https://example.org/" > targets.txt
./fetch-through-proxy.sh

Satu baris keluaran per URL ditulis ke out/status.log, dan jeda antar permintaan menjaga Anda tetap dalam laju permintaan yang dapat diterima target. Sesuaikan sleep agar cocok dengan ekspektasi setiap situs daripada menghapusnya.

9. Terapkan proxy ke alat CLI lainnya

  • Variabel lingkungan. export ALL_PROXY="socks5h://user:pass@host:port" dihormati oleh curl dan sebagian library, tetapi tidak oleh semua program. Sebagian alat mengharapkan HTTPS_PROXY dan HTTP_PROXY sebagai gantinya, jadi setel keduanya juga jika perlu, dan ingat nilainya berlaku untuk setiap perintah di sesi shell tersebut.
  • proxychains-ng. Pembungkus ini memaksa program TCP arbitrer melewati proxy SOCKS. Tambahkan entri socks5 host port ke /etc/proxychains.conf atau ~/.proxychains/proxychains.conf, lalu awali perintah dengan proxychains4. Sintaks autentikasi bervariasi antar build, jadi pastikan format konfigurasi versi Anda sebelum mengandalkannya untuk endpoint ber-kredensial.
  • Alat tanpa dukungan SOCKS. Misalnya GNU wget tidak mendukung SOCKS. Jalankan alat semacam itu melalui proxychains-ng, atau alihkan beban kerja tersebut ke endpoint proxy HTTP, karena Dataimpulse mendukung HTTP maupun SOCKS5.

10. Bereskan setelah proses selesai

unset PROXY_PASS PROXY_USER
  • Hapus ~/.dataimpulse.env jika Anda tidak lagi memerlukannya, atau biarkan pada mode 600 untuk sesi berikutnya.
  • Hapus dari riwayat shell Anda perintah apa pun yang tanpa sengaja memuat password dalam teks biasa.

Pemecahan masalah

Gejala Kemungkinan penyebab Perbaikan
407 Proxy Authentication Required Username atau password salah, atau port HTTP digunakan dengan flag SOCKS5 Salin ulang kredensial dari dasbor dan pastikan port SOCKS5
Unsupported proxy scheme atau opsi tidak dikenal curl dibangun tanpa SOCKS5 Tingkatkan curl atau pasang build dengan dukungan SOCKS (langkah 2)
Kegagalan resolusi nama untuk sebagian host Resolusi DNS lokal melalui socks5:// Beralih ke --socks5-hostname atau socks5h://
Koneksi ditolak atau timeout berulang Host atau port salah, firewall, atau pemblokiran jaringan Periksa ulang endpoint, uji di jaringan lain, tambahkan --connect-timeout 15
wget mengabaikan proxy GNU wget tidak memiliki dukungan SOCKS Gunakan curl, proxychains-ng, atau endpoint proxy HTTP
IP keluar sama pada setiap permintaan Sesi tetap atau sticky yang dikonfigurasi untuk akun Tinjau pengaturan sesi di dasbor Dataimpulse
Respons 403, 429, atau CAPTCHA Pembatasan laju atau pemblokiran dari sisi target Perlambat, beri jeda antar permintaan, kurangi konkurensi, tinjau ketentuan situs
Kesalahan TLS atau sertifikat Masalah penyimpanan CA lokal atau jam sistem Perbaiki trust store atau jam; jangan nonaktifkan verifikasi dengan -k
Pengeluaran naik lebih cepat dari perkiraan Percobaan ulang, muatan besar, atau unduhan media Turunkan --max-time, hindari mencoba ulang kesalahan permanen, pantau dasbor

Ringkasan

Anda mengonfigurasi shell Linux untuk mengirim permintaan melalui endpoint SOCKS5 Dataimpulse, memverifikasi rotasi dengan layanan echo IP, mencatat kode respons dan jumlah byte, serta menjalankan tugas batch dengan pembatasan laju. Utamakan socks5h:// agar DNS di-resolve di proxy, simpan kredensial dalam file mode 600 alih-alih di baris perintah, dan gunakan proxychains-ng ketika sebuah alat tidak dapat berbicara SOCKS5 sendiri. Karena penagihan bersifat bayar sesuai pemakaian berdasarkan lalu lintas, pantau dasbor saat Anda menyetel jeda dan percobaan ulang.