Coloca la selección aleatoria dentro del shell que se inicia para cada trabajo. Expandir una sustitución de comando en el shell externo elige el valor antes de que xargs empiece su tarea.

Con un proxies.txt validado con una URL de proxy por línea, los candidatos públicos pueden venir de la lista de proxies gratuitos; formatea cada entrada con un protocolo que curl admita:

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 entrega una URL a cada comando, y -P 4 permite hasta cuatro comandos a la vez. La entrada delimitada por nulos conserva la URL como un solo argumento. El guion bajo ocupa la posición $0 de sh y deja la URL en $1.

Cada shell hijo ejecuta shuf de forma independiente. La selección aleatoria puede elegir el mismo proxy más de una vez; no es una planificación por turnos ni garantiza direcciones de salida distintas.

La lista de omisión vacía explícita impide que un ajuste no_proxy heredado evite el intermediario elegido. El ejemplo descarta los cuerpos de respuesta; usa rutas de salida separadas al guardar descargas simultáneas.

Artículos relacionados