Scegli il proxy dentro ogni processo xargs
Esegui la selezione casuale nella shell figlia così ogni processo curl parallelo ottiene un proxy dall'elenco.
Metti la selezione casuale nella shell avviata per ogni processo. Espandere una sostituzione di comando nella shell esterna sceglie il valore prima che xargs inizi il proprio lavoro.
Con un proxies.txt convalidato con un URL di proxy per riga, i candidati pubblici possono venire dalla lista di proxy gratuiti; formatta ogni voce con un protocollo supportato da 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 fornisce un URL a ogni comando e -P 4 consente fino a quattro comandi alla volta. L'input delimitato da null conserva l'URL come un solo argomento. Il trattino basso occupa la posizione $0 di sh, lasciando l'URL in $1.
Ogni shell figlia esegue shuf in modo indipendente. La selezione casuale può scegliere lo stesso proxy più di una volta; non è una pianificazione a rotazione né una garanzia di indirizzi di uscita diversi.
L'elenco di esclusione vuoto esplicito impedisce a un'impostazione no_proxy ereditata di aggirare l'intermediario scelto. L'esempio scarta i corpi delle risposte; usa percorsi di output separati quando salvi download simultanei.