Choisir le proxy à l'intérieur de chaque tâche xargs
Exécutez la sélection aléatoire dans le shell enfant pour que chaque tâche curl parallèle obtienne un proxy de la liste.
Placez la sélection aléatoire dans le shell lancé pour chaque tâche. Développer une substitution de commande dans le shell externe choisit la valeur avant que xargs ne commence son travail.
Avec un proxies.txt validé contenant une URL de proxy par ligne, les candidats publics peuvent venir de la liste de proxys gratuits ; formatez chaque entrée avec un protocole pris en charge par 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 fournit une URL à chaque commande, et -P 4 autorise jusqu'à quatre commandes à la fois. L'entrée délimitée par des zéros conserve l'URL comme un seul argument. Le souligné occupe la position $0 de sh, laissant l'URL dans $1.
Chaque shell enfant exécute shuf indépendamment. La sélection aléatoire peut choisir le même proxy plusieurs fois ; ce n'est ni une répartition par tours ni une garantie d'adresses de sortie différentes.
La liste de contournement vide explicite empêche un réglage no_proxy hérité de contourner l'intermédiaire choisi. L'exemple jette les corps de réponse ; utilisez des chemins de sortie distincts pour enregistrer des téléchargements simultanés.