ໃສ່ການເລືອກແບບສຸ່ມໄວ້ພາຍໃນເຊວທີ່ເລີ່ມສຳລັບແຕ່ລະວຽກ. ການຂະຫຍາຍການແທນຄຳສັ່ງໃນເຊວພາຍນອກຈະເລືອກຄ່າກ່ອນທີ່ xargs ຈະເລີ່ມວຽກຂອງມັນ.

ດ້ວຍ proxies.txt ທີ່ກວດສອບແລ້ວ ມີພຣັອກຊີ URL ໜຶ່ງຕໍ່ແຖວ, ຜູ້ສະໝັກສາທາລະນະສາມາດມາຈາກລາຍການພຣັອກຊີຟຣີ; ຈັດຮູບແບບແຕ່ລະລາຍການດ້ວຍໂປຣໂຕຄອນທີ່ 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 ໃຫ້ URL ໜຶ່ງແກ່ແຕ່ລະຄຳສັ່ງ, ແລະ -P 4 ອະນຸຍາດໃຫ້ສູງສຸດສີ່ຄຳສັ່ງໃນເວລາດຽວກັນ. ຂໍ້ມູນເຂົ້າທີ່ແຍກດ້ວຍສູນຮັກສາ URL ໄວ້ເປັນອາກູເມັນດຽວ. ເສັ້ນລຸ່ມຍຶດຕຳແໜ່ງ $0 ຂອງ sh, ປ່ອຍ URL ໄວ້ໃນ $1.

ເຊວລູກແຕ່ລະອັນດຳເນີນການ shuf ຢ່າງເປັນເອກະລາດ. ການເລືອກແບບສຸ່ມອາດເລືອກພຣັອກຊີດຽວກັນຫຼາຍກວ່າໜຶ່ງເທື່ອ; ມັນບໍ່ແມ່ນການຈັດຕາຕະລາງແບບວຽນລຳດັບ ແລະ ບໍ່ແມ່ນການຮັບປະກັນທີ່ຢູ່ອອກທີ່ແຕກຕ່າງ.

ລາຍການຂ້າມທີ່ຫວ່າງເປົ່າຢ່າງຊັດເຈນປ້ອງກັນບໍ່ໃຫ້ການຕັ້ງຄ່າ no_proxy ທີ່ຮັບມະລະດົກຂ້າມຕົວກາງທີ່ເລືອກ. ຕົວຢ່າງຖິ້ມເນື້ອຫາຄຳຕອບ; ໃຊ້ເສັ້ນທາງຜົນອອກແຍກຕ່າງຫາກເມື່ອບັນທຶກການດາວໂຫຼດພ້ອມກັນ.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ