گزینه --preproxy در curl پیش از رسیدن به پروکسی HTTP یا HTTPS به پروکسی SOCKS وصل می‌شود. این زنجیره مشخص را پشتیبانی می‌کند، نه فهرستی دلخواه از سرورهای پروکسی.

مسیر عبارت است از کلاینت → نقطه SOCKS → پروکسی HTTP → مقصد. هر دو نقطه مستنداتی فرمان را عوض کنید:

curl --preproxy socks5h://203.0.113.10:1080 --proxy http://203.0.113.20:8080 --noproxy '' --connect-timeout 5 --max-time 20 --verbose https://example.com/

سرویس SOCKS باید به نشانی و پورت پروکسی HTTP دسترسی داشته باشد. سپس پروکسی HTTP باید درخواست مقصد را بپذیرد. اگر پروکسی دوم با نام میزبان مشخص شده، حالت SOCKS اول تعیین می‌کند آن نام کجا resolve شود؛ نقطه عددی به این جست‌وجو نیاز ندارد.

یافتن گام ناموفق

ابتدا یک درخواست از هر نقطه را جداگانه تأیید کنید؛ برای گام HTTP از آزمون پروکسی HTTP با محدودیت زمانی استفاده کنید. حتی اگر هر دو کار کنند، مسیر ترکیبی ممکن است شکست بخورد چون پروکسی اول به دومی دسترسی ندارد.

ردیابی مفصل را به ترتیب اتصال بخوانید. شکست SOCKS هنگام رسیدن به پروکسی دوم پیش از تصمیم پروکسی HTTP برای پذیرش یا رد CONNECT به وب‌سایت رخ می‌دهد. ثبت کنید کدام دست‌دهی شکست خورده است.

چه زمانی گام اضافه کمک می‌کند

این چیدمان زمانی مفید است که پروکسی HTTP مجاز از مسیر SOCKS در دسترس باشد. اما سرویس و مسیر شبکه دیگری هم اضافه می‌کند که ممکن است خراب شوند یا تأخیر بیاورند. زنجیره کردن نقاط یک فهرست پروکسی عمومی قابلیت اطمینان یا ناشناس‌ماندن را تضمین نمی‌کند و همچنان نیازمند اعتماد به طرف‌های پردازش‌کننده اتصال است.

--preproxy به curl 7.52.0 یا جدیدتر نیاز دارد؛ برنامه‌های دیگر ممکن است چنین چیدمانی را پشتیبانی نکنند.

مقالات مرتبط