Penggunaan proksi cURL, mengesahkan proksi HTTP dan SOCKS5 dari baris arahan
Panduan untuk menyambung HTTP dan SOCKS5 proxy Socks5Proxy menggunakan cURL, pengesahan username/password, pengukuran masa respons, dan skrip shell untuk menyemak keseluruhan senarai sekaligus.
Mengapa baik untuk menguji proksi dengan cURL?
cURL dipasang di hampir semua pelayan dan persekitaran pembangunan, menjadikannya alat terpantas untuk mengesahkan proksi berfungsi dengan betul. Jika terdapat masalah dalam kod atau tetapan pelayar, menguji baris yang sama dengan cURL boleh membezakan sama ada masalahnya pada proksi atau kod.
Contoh menggunakan IP 198.51.100.23, port HTTP 8000, port SOCKS5 1080, username spx_user, dan password spx_pass.
Bagaimana cara menghubungkan HTTP proxy?
Masukkan alamat proksi ke dalam pilihan -x (atau --proxy). ID dan kata laluan boleh dimasukkan dalam alamat atau secara berasingan dengan pilihan -U. Jika anda meminta alamat HTTPS, cURL akan membuat terowong CONNECT dan membuat 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.orgBagaimana untuk menyambung ke proksi SOCKS5?
--socks5-hostname menyelesaikan nama domain melalui proksi. Permintaan DNS pelayan anda tidak akan terdedah, dan nama domain akan diselesaikan berdasarkan negara proksi. --socks5 menyelesaikan nama domain pada pelayan anda dan hanya menghantar IP ke proksi. Dalam kebanyakan kes, kami mengesyorkan menggunakan --socks5-hostname.
Format alamat socks5h:// memberikan hasil yang sama apabila 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.orgBagaimana untuk melihat masa respons dan status bersama?
Dengan pilihan -w, anda boleh mencetak masa sambungan, masa hingga bait pertama, jumlah masa, dan kod respons dalam satu baris. Ini berguna untuk membandingkan kelajuan proksi dari pelbagai negara atau membezakan sama ada tapak sasaran atau proksi yang perlahan.
Gunakan -o /dev/null untuk membuang badan respons dan -s untuk mematikan paparan kemajuan, supaya anda hanya melihat hasil yang bersih.
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 menyemak seluruh senarai sekaligus?
Anda boleh menerima senarai melalui API dan menjalankan cURL untuk setiap baris untuk memeriksa status semua proksi sekaligus. Skrip di bawah menerima senarai dalam format ip:port:user:pass dan mencetak IP respons dan masa yang diambil untuk setiap baris. Had masa ditetapkan supaya skrip tidak terhenti pada baris tanpa respons.
#!/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.txtBolehkah API dipanggil menggunakan cURL?
Ya. Memeriksa saldo, daftar plan aktif, dan daftar proxy semuanya dapat dilakukan dengan satu header Authorization: Bearer. Respons JSON dapat difilter dengan alat seperti jq untuk melihat kolom yang diperlukan.
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"Bolehkah saya menetapkan proksi menggunakan pembolehubah persekitaran?
Ya. cURL dan banyak alat baris perintah membaca variabel lingkungan http_proxy, https_proxy, dan all_proxy. Menetapkannya sekali di shell akan membuat alat seperti cURL, wget, dan pip menggunakan proxy yang sama. Untuk SOCKS5, gunakan alamat socks5h:// di all_proxy.
Letakkan alamat yang tidak perlu melalui proksi dalam no_proxy dengan koma. Ini boleh menghalang pelayan dalaman atau localhost daripada keluar melalui proksi.
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 cara membandingkan hasil HTTP proxy dan SOCKS5 proxy?
Bandingkan IP dan masa respons dengan menghantar permintaan sama melalui kedua-dua port IP sama untuk melihat kaedah mana lebih pantas dalam persekitaran anda. Kebanyakannya serupa, tetapi perbezaan mungkin ketara jika pelayan sasaran jauh atau DNS perlahan.
IP respons harus sama untuk kedua-dua kaedah. Jika berbeza, mungkin anda menggunakan port dari baris yang berbeza, sila semak semula senarai.
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
doneBagaimana untuk memeriksa IP untuk pengesahan IP di pelayan?
Nilai untuk didaftarkan dalam pengesahan IP ialah IPv4 awam yang digunakan oleh pelayan anda untuk keluar ke internet. Anda boleh menyemak nilai ini dengan menjalankan curl -4 https://api.ipify.org tanpa proksi. Daftarkan nilai ini dalam ruangan pengesahan IP dashboard, dan sambungan akan berlaku tanpa nama pengguna dan kata laluan dari pelayan tersebut.
curl -4 -s https://api.ipify.orgBisakah proxy melihat konten situs HTTPS?
Saat meminta alamat HTTPS dengan HTTP proxy, cURL pertama-tama membuat tunnel ke server tujuan dengan CONNECT, lalu membuat koneksi terenkripsi langsung dengan server tujuan di dalamnya. Proxy hanya tahu server mana yang terhubung, dan konten yang dikirimkan terenkripsi dan tidak dapat dilihat. Menjalankan dengan opsi -v akan menampilkan tahap CONNECT dan proses koneksi terenkripsi berikutnya secara berurutan.
SOCKS5 juga sama. Proxy hanya meneruskan sambungan, dan penyulitan berlaku antara cURL dan pelayan sasaran. Oleh itu, adalah selamat untuk tidak menggunakan pilihan pengesahan sijil (-k). Ini kerana sijil pelayan sasaran akan disahkan walaupun melalui proxy.
Dengan menggunakan --socks5-hostname, nama domain yang anda cuba sambungkan juga akan diselesaikan oleh proksi, jadi rekod permintaan DNS pelayan anda tidak akan menunjukkan apa-apa.
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 untuk membaca mesej ralat cURL?
Received HTTP code 407 from proxy after CONNECT bermaksud kegagalan pengesahan. Sila semak nama pengguna dan kata laluan, atau alamat IP pelayan yang didaftarkan untuk pengesahan IP. Jika kata laluan mengandungi @ atau :, jangan masukkan ke dalam alamat tetapi gunakan -U atau --proxy-user.
Failed to connect atau Connection timed out terjadi karena port tidak cocok atau firewall server Anda memblokir koneksi keluar. Gunakan port HTTP untuk alamat HTTP dan port SOCKS5 untuk SOCKS5, dan pastikan port keluar terbuka. Opsi -v akan menampilkan proses koneksi langkah demi langkah, memudahkan menemukan penyebabnya.