Wähle den Proxy innerhalb jedes xargs-Jobs
Führe die Zufallsauswahl in der Kind-Shell aus, damit jeder parallele curl-Job einen Proxy aus der Liste erhält.
Setze die Zufallsauswahl in die Shell, die für jeden Job gestartet wird. Wird eine Kommandosubstitution in der äußeren Shell expandiert, steht der Wert fest, bevor xargs seine Arbeit beginnt.
Mit einer geprüften proxies.txt mit einer Proxy-URL pro Zeile können öffentliche Kandidaten aus der Liste kostenloser Proxys stammen; formatiere jeden Eintrag mit einem von curl unterstützten Protokoll:
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 übergibt jedem Befehl eine URL, und -P 4 erlaubt bis zu vier Befehle gleichzeitig. Die nullgetrennte Eingabe bewahrt die URL als ein Argument. Der Unterstrich belegt die $0-Position von sh, sodass die URL in $1 bleibt.
Jede Kind-Shell führt shuf eigenständig aus. Die Zufallsauswahl kann denselben Proxy mehrfach treffen; sie ist keine Rundlaufplanung und keine Garantie für verschiedene Ausgangsadressen.
Die ausdrücklich leere Bypass-Liste verhindert, dass eine geerbte no_proxy-Einstellung den gewählten Vermittler umgeht. Das Beispiel verwirft Antwortkörper; nutze getrennte Ausgabepfade, wenn gleichzeitige Downloads gespeichert werden.