เลือกพร็อกซีภายในแต่ละงาน xargs
รันการสุ่มเลือกในเชลล์ลูก เพื่อให้แต่ละงาน curl ที่ทำงานขนานกันได้รับพร็อกซีจากรายการ
วางการสุ่มเลือกไว้ในเชลล์ที่เริ่มสำหรับแต่ละงาน การขยายการแทนที่คำสั่งในเชลล์ชั้นนอกจะเลือกค่าก่อนที่ 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 ที่สืบทอดมาข้ามตัวกลางที่เลือกไว้ ตัวอย่างนี้ทิ้งเนื้อหาการตอบกลับ ใช้พาธเอาต์พุตแยกกันเมื่อบันทึกการดาวน์โหลดพร้อมกัน