Wybierz proxy wewnątrz każdego zadania xargs
Uruchom losowy wybór w powłoce potomnej, aby każde równoległe zadanie curl otrzymało proxy z listy.
Umieść losowy wybór wewnątrz powłoki uruchamianej dla każdego zadania. Rozwinięcie podstawienia polecenia w powłoce zewnętrznej wybiera wartość, zanim xargs rozpocznie pracę.
Dzięki zweryfikowanemu plikowi proxies.txt z jednym adresem URL proxy w wierszu publiczni kandydaci mogą pochodzić z listy darmowych proxy; formatuj każdy wpis protokołem obsługiwanym przez 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 przekazuje jednemu poleceniu jeden adres URL, a -P 4 pozwala na maksymalnie cztery polecenia jednocześnie. Wejście rozdzielone znakami NUL zachowuje adres URL jako jeden argument. Podkreślnik zajmuje pozycję $0 w sh, zostawiając adres URL w $1.
Każda powłoka potomna uruchamia shuf niezależnie. Losowy wybór może wskazać to samo proxy więcej niż raz; nie jest to planowanie karuzelowe ani gwarancja różnych adresów wyjścia.
Jawnie pusta lista obejść nie pozwala odziedziczonemu ustawieniu no_proxy ominąć wybranego pośrednika. Przykład odrzuca treść odpowiedzi; podczas zapisywania równoległych pobrań używaj osobnych ścieżek wyjściowych.