Velg proxyen inne i hver xargs-jobb
Kjør det tilfeldige valget i barneskallet slik at hver parallell curl-jobb får en proxy fra listen.
Legg det tilfeldige valget inne i skallet som startes for hver jobb. Utvider du en kommandosubstitusjon i det ytre skallet, velges verdien før xargs begynner arbeidet sitt.
Med en validert proxies.txt med én proxy-URL per linje kan offentlige kandidater komme fra listen over gratis proxyer; formater hver oppføring med en protokoll som curl støtter:
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 gir én URL til hver kommando, og -P 4 tillater opptil fire kommandoer samtidig. Inndata atskilt med null beholder URL-en som ett argument. Understreken tar $0-posisjonen til sh og lar URL-en bli i $1.
Hvert barneskall kjører shuf uavhengig. Det tilfeldige valget kan velge samme proxy flere ganger; det er ikke rundgangsplanlegging og ingen garanti for ulike utgangsadresser.
Den uttrykkelig tomme omgåelseslisten hindrer en nedarvet no_proxy-innstilling i å omgå den valgte mellommannen. Eksempelet forkaster svarlegemene; bruk separate utdatastier når du lagrer samtidige nedlastinger.