Избирайте проксито във всяка задача на xargs
Изпълнявайте случайния избор в дъщерния shell, за да получава всяка паралелна задача curl прокси от списъка.
Поставете случайния избор в shell, който се стартира за всяка задача. Разгръщането на заместване на команда във външния shell избира стойността, преди xargs да започне работа.
С валидиран proxies.txt с по един URL на прокси на ред публичните кандидати могат да идват от списъка с безплатни проксита; форматирайте всеки запис с протокол, поддържан от 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 подава един URL на всяка команда, а -P 4 позволява до четири команди едновременно. Входът, разделен с нула, запазва URL като един аргумент. Долната черта заема позицията $0 на sh, оставяйки URL в $1.
Всеки дъщерен shell изпълнява shuf независимо. Случайният избор може да избере същото прокси повече от веднъж; това не е последователно планиране и не гарантира различни адреси за изход.
Явният празен списък за обход не позволява на наследена настройка no_proxy да обходи избрания посредник. Примерът изхвърля телата на отговорите; използвайте отделни изходни пътища, когато запазвате паралелни изтегляния.