Alege proxy-ul în interiorul fiecărei sarcini xargs
Rulează selecția aleatorie în shell-ul copil pentru ca fiecare sarcină curl paralelă să primească un proxy din listă.
Pune selecția aleatorie în shell-ul pornit pentru fiecare sarcină. Extinderea unei substituții de comandă în shell-ul exterior alege valoarea înainte ca xargs să înceapă lucrul.
Cu un proxies.txt validat care conține un URL de proxy pe fiecare linie, candidații publici pot veni din lista de proxy-uri gratuite; formatează fiecare intrare cu un protocol acceptat de 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 oferă un URL fiecărei comenzi, iar -P 4 permite până la patru comenzi simultan. Intrarea delimitată cu zerouri păstrează URL-ul ca un singur argument. Linia de jos ocupă poziția $0 a lui sh, lăsând URL-ul în $1.
Fiecare shell copil rulează shuf independent. Selecția aleatorie poate alege același proxy de mai multe ori; nu este o planificare circulară și nici o garanție a unor adrese de ieșire diferite.
Lista de ocolire goală explicită împiedică o setare no_proxy moștenită să ocolească intermediarul ales. Exemplul aruncă corpurile răspunsurilor; folosește căi de ieșire separate când salvezi descărcări simultane.