Выбор обработчика cURL в Guzzle для SOCKS-прокси
Обработчик, поддерживающий только HTTP-потоки, не получит согласование SOCKS из URL прокси; выберите поддерживаемый транспорт в реальной среде PHP.
Когда вы осознанно выбираете обработчик клиента 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 в одном не доказывает его доступность в другом.