Поставете случайния избор в 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 да обходи избрания посредник. Примерът изхвърля телата на отговорите; използвайте отделни изходни пътища, когато запазвате паралелни изтегляния.

Подобни статии