درون مقداردهی اولیه libcurl موجود برنامه و چرخه عمر easy-handle:

curl_easy_setopt(handle, CURLOPT_URL, "https://example.com/");
curl_easy_setopt(handle, CURLOPT_PROXY, "127.0.0.1:1080");
curl_easy_setopt(handle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
curl_easy_setopt(handle, CURLOPT_NOPROXY, "");
curl_easy_setopt(handle, CURLOPT_CONNECTTIMEOUT, 5L);
curl_easy_setopt(handle, CURLOPT_TIMEOUT, 15L);

CURLPROXY_SOCKS5_HOSTNAME نام میزبان مقصد را در مسیر SOCKS می‌فرستد. CURLPROXY_SOCKS5 در عوض آن را روی کلاینت حل می‌کند، که می‌تواند از نمای DNS شبکه‌ای دیگر استفاده کند. یک کلاینت HTTP به زبان C++ که از libcurl استفاده می‌کند برای انتخاب این مسیر به دست‌دهی SOCKS خودش نیازی ندارد. برای یک نقطه پایانی عمومی مجاز، فهرست پروکسی SOCKS5 نامزدهای میزبان و پورت را برای جایگزینی شنونده loopback نمونه ارائه می‌دهد.

مقدار خالی CURLOPT_NOPROXY آزمون پروکسی را عمدی می‌کند. هنگام تطبیق آن با سیاست عادی برنامه، دورزدن‌های موردنظر را حفظ کنید. این گزینه‌ها بر این هندل اثر می‌گذارند؛ کتابخانه‌ها و سوکت‌های دیگر در فرایند آن‌ها را به ارث نمی‌برند.

مقادیر بازگشتی تنظیم گزینه‌ها و انتقال را از طریق مدیریت خطای برنامه بررسی کنید. شکست در رسیدن به SOCKS یا مذاکره با آن می‌تواند پیش از هر پاسخ HTTP رخ دهد، بنابراین کد وضعیت وب‌سایت را ارائه نمی‌کند.

اعتبارنامه‌های پروکسی موردنیاز از تنظیمات احراز هویت پروکسی پشتیبانی‌شده و سازوکار اسرار، جدا از ورود به وب‌سایت استفاده می‌کنند. تأیید TLS را فعال نگه دارید: باز کردن اتصال از طریق SOCKS هویت سرویس HTTPS را اثبات نمی‌کند.

مقالات مرتبط