Izberite proxy znotraj vsake naloge xargs
Zaženite naključno izbiro v podrejeni lupini, da vsaka vzporedna naloga curl dobi proxy s seznama.
Postavite naključno izbiro v lupino, ki se zažene za vsako nalogo. Če zamenjavo ukaza razširite v zunanji lupini, se vrednost izbere, preden xargs začne svoje delo.
S preverjenim proxies.txt z enim URL-jem proxy v vsaki vrstici lahko javni kandidati prihajajo s seznama brezplačnih proxyjev; vsak vnos oblikujte s protokolom, ki ga curl podpira:
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 vsakemu ukazu poda en URL, -P 4 pa dovoli do štiri ukaze hkrati. Vnos, ločen z ničlami, ohrani URL kot en argument. Podčrtaj zasede položaj $0 v sh, URL pa ostane v $1.
Vsaka podrejena lupina samostojno izvaja shuf. Naključna izbira lahko izbere isti proxy večkrat; to ni krožno razporejanje in ni zagotovilo različnih izhodnih naslovov.
Izrecno prazen seznam zaobidenja prepreči, da bi podedovana nastavitev no_proxy zaobšla izbranega posrednika. Primer zavrže telesa odgovorov; pri shranjevanju sočasnih prenosov uporabite ločene izhodne poti.