Pilih proxy di dalam setiap tugas xargs
Jalankan pemilihan acak di shell anak agar setiap tugas curl paralel mendapat proxy dari daftar.
Letakkan pemilihan acak di dalam shell yang dijalankan untuk setiap tugas. Memperluas substitusi perintah di shell luar memilih nilainya sebelum xargs memulai pekerjaannya.
Dengan proxies.txt tervalidasi berisi satu URL proxy per baris, kandidat publik dapat berasal dari daftar proxy gratis; format setiap entri dengan protokol yang didukung curl:
printf '%s\0' 'https://a.example/one' 'https://b.example/two' |
xargs -0 -n 1 -P 4 sh -c '
proxy=$(shuf -n 1 proxies.txt) || exit 1
[ -n "$proxy" ] || exit 1
curl --fail --silent --show-error --max-time 30 \
--proxy "$proxy" --noproxy "" --output /dev/null "$1"
' _
-n 1 memberikan satu URL ke setiap perintah, dan -P 4 mengizinkan hingga empat perintah sekaligus. Input yang dipisahkan nol mempertahankan URL sebagai satu argumen. Garis bawah mengisi posisi $0 sh, sehingga URL tetap di $1.
Setiap shell anak menjalankan shuf secara mandiri. Pemilihan acak dapat memilih proxy yang sama lebih dari sekali; ini bukan penjadwalan bergilir dan bukan jaminan alamat keluar yang berbeda.
Daftar lewati yang kosong secara eksplisit mencegah pengaturan no_proxy warisan melewati perantara yang dipilih. Contoh ini membuang isi respons; gunakan jalur keluaran terpisah saat menyimpan unduhan bersamaan.