هنگامی که هندلر یک کلاینت Guzzle را آگاهانه انتخاب می‌کنید، پشته‌ای مبتنی بر cURL می‌تواند از SOCKS استفاده کند:

$stack = \GuzzleHttp\HandlerStack::create(
    new \GuzzleHttp\Handler\CurlHandler()
);

$client = new \GuzzleHttp\Client([
    'handler' => $stack,
    'proxy' => 'socks5h://proxy.example.net:1080',
]);

socks5h از پروکسی می‌خواهد نام مقصد را تفکیک کند. Guzzle نقطهٔ پایانی را به libcurl می‌سپارد، پس نسخهٔ بارگذاری‌شدهٔ libcurl باید آن پروتکل را پشتیبانی کند. فهرست پروکسی SOCKS5 نامزدهای نقطهٔ پایانی عمومی را برای URL پروکسی کلاینت فراهم می‌کند.

اگر برنامه از قبل پشتهٔ هندلر دارد، پیش از جایگزینی آن و از دست دادن میان‌افزار، انتقال زیرین آن را بررسی کنید. هندلری که به جریان‌های HTTP در PHP محدود است نمی‌تواند SOCKS را فقط به این دلیل که کلاینت این گزینه را دریافت می‌کند پیاده‌سازی کند.

فرایندی را که درخواست را انجام می‌دهد بررسی کنید. CLI PHP و PHP-FPM می‌توانند پرونده‌های پیکربندی و افزونه‌های متفاوتی بارگذاری کنند؛ وجود cURL در یکی، دسترس‌پذیری آن را در دیگری ثابت نمی‌کند.

مقالات مرتبط