Válassza ki a proxyt minden xargs-feladaton belül
A véletlen kiválasztást a gyermekhéjban futtassa, hogy minden párhuzamos curl-feladat proxyt kapjon a listáról.
A véletlen kiválasztást abba a héjba tegye, amely minden feladathoz elindul. Ha a parancshelyettesítést a külső héjban fejti ki, az érték még azelőtt kiválasztódik, hogy az xargs elkezdené a munkáját.
Egy ellenőrzött proxies.txt fájllal, amelyben soronként egy proxy URL szerepel, a nyilvános jelöltek a ingyenes proxyk listájáról származhatnak; minden bejegyzést a curl által támogatott protokollal formázzon:
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"
' _
A -n 1 egy URL-t ad minden parancsnak, a -P 4 pedig egyszerre legfeljebb négy parancsot engedélyez. A nullákkal tagolt bemenet egyetlen argumentumként őrzi meg az URL-t. Az aláhúzás foglalja el a sh $0 pozícióját, így az URL a $1 helyen marad.
Minden gyermekhéj önállóan futtatja a shuf parancsot. A véletlen kiválasztás többször is ugyanazt a proxyt választhatja; ez nem körkörös ütemezés, és nem garantál különböző kilépési címeket.
A kifejezetten üres megkerülési lista megakadályozza, hogy egy örökölt no_proxy beállítás megkerülje a kiválasztott közvetítőt. A példa elveti a választörzseket; párhuzamos letöltések mentésekor használjon külön kimeneti útvonalakat.