انتخاب تصادفی را داخل پوسته‌ای بگذارید که برای هر کار آغاز می‌شود. گسترش جایگزینی فرمان در پوستهٔ بیرونی مقدار را پیش از آنکه xargs کار خود را شروع کند برمی‌گزیند.

با یک proxies.txt اعتبارسنجی‌شده که در هر خط یک نشانی پروکسی دارد، نامزدهای عمومی می‌توانند از فهرست پروکسی رایگان بیایند؛ هر ورودی را با پروتکلی قالب‌بندی کنید که 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 به هر فرمان یک نشانی می‌دهد و -P 4 حداکثر چهار فرمان را همزمان مجاز می‌کند. ورودی جدا‌شده با تهی، نشانی را به‌عنوان یک آرگومان نگه می‌دارد. زیرخط جایگاه $0 در sh را می‌گیرد و نشانی را در $1 باقی می‌گذارد.

هر پوستهٔ فرزند shuf را مستقل اجرا می‌کند. انتخاب تصادفی ممکن است پروکسی یکسان را بیش از یک بار برگزیند؛ این زمان‌بندی گردشی نیست و تضمینی برای متفاوت بودن نشانی‌های خروج هم نیست.

فهرست دورزدن خالی و صریح مانع می‌شود که تنظیم no_proxy به‌ارث‌رسیده از واسط انتخاب‌شده بگذرد. نمونه بدنهٔ پاسخ‌ها را دور می‌ریزد؛ هنگام ذخیرهٔ دانلودهای همزمان از مسیرهای خروجی جداگانه استفاده کنید.

مقالات مرتبط