Поместите случайный выбор внутрь оболочки, запускаемой для каждой задачи. Если раскрыть подстановку команды во внешней оболочке, значение будет выбрано ещё до того, как 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.

Каждая дочерняя оболочка запускает shuf независимо. Случайный выбор может взять один и тот же прокси более одного раза; это не круговое планирование и не гарантия разных адресов выхода.

Явно пустой список обхода не позволяет унаследованной настройке no_proxy обойти выбранного посредника. Пример отбрасывает тела ответов; при сохранении параллельных загрузок используйте отдельные пути вывода.

Похожие статьи