خطی که از فایل CRLF کپی شده ممکن است مانند proxy.example:8080 به نظر برسد، در حالی که متغیر در واقع با یک بازگشت کالسکه پایان می‌یابد. گذاشتن متغیر در گیومه آن نویسه را حفظ می‌کند؛ آن را حذف نمی‌کند.

برای فایل Bash که در هر خط یک URL کامل پروکسی دارد:

target='https://api.example/'
while IFS= read -r proxy || [ -n "$proxy" ]; do
    proxy=${proxy%$'\r'}
    if [ -z "$proxy" ]; then
        continue
    fi
    curl --proxy "$proxy" --max-time 10 --url "$target"
done < ProxyList.txt

از ورودی‌هایی مانند http://proxy.example:8080 استفاده کنید؛ فهرست پروکسی HTTP نشانی‌های عمومی نامزد را برای قالب‌بندی به این شکل فراهم می‌کند. read جداکنندهٔ خط جدید را حذف می‌کند؛ گسترش پسوند یک CR انتهایی را در صورت وجود حذف می‌کند. شرط همچنین آخرین خط ناتهی بدون خط جدید را پردازش می‌کند.

IFS= از تقسیم فیلد در هنگام read جلوگیری می‌کند و -r بک‌اسلش‌های تحت‌اللفظی را حفظ می‌کند. سپس گیومه‌های دوتایی URL حاصل را به‌عنوان یک آرگومان curl می‌فرستند. از تکرار روی خروجی جانشینی فرمان بپرهیزید: تقسیم واژه‌ای پوسته می‌تواند مرزهای رکورد فایل را پیش از دیدن آن‌ها توسط curl تغییر دهد.

این پایان خطوط را یکسان‌سازی می‌کند. پروتکل شنود اشتباه، نقطهٔ پایانی گمشده یا سرویس غیرقابل‌دسترس را درست نمی‌کند.

مقالات مرتبط