Elegir el manejador cURL de Guzzle para un proxy SOCKS
Un manejador limitado a flujos HTTP no puede obtener negociación SOCKS desde una URL de proxy; elija un transporte compatible en el entorno PHP real.
Al elegir deliberadamente el manejador de un cliente Guzzle, una pila basada en cURL puede usar SOCKS:
$stack = \GuzzleHttp\HandlerStack::create(
new \GuzzleHttp\Handler\CurlHandler()
);
$client = new \GuzzleHttp\Client([
'handler' => $stack,
'proxy' => 'socks5h://proxy.example.net:1080',
]);socks5h pide al proxy que resuelva el nombre de destino. Guzzle pasa el extremo a libcurl, por lo que la compilación de libcurl cargada debe admitir ese protocolo. La lista de proxies SOCKS5 proporciona candidatos públicos de extremo para la URL de proxy del cliente.
Si la aplicación ya tiene una pila de manejadores, revise su transporte subyacente antes de reemplazarla y perder middleware. Un manejador limitado a flujos HTTP de PHP no puede implementar SOCKS solo porque el cliente reciba esta opción.
Compruebe el proceso que realiza la solicitud. La CLI de PHP y PHP-FPM pueden cargar archivos de configuración y extensiones distintos; que cURL aparezca en uno no demuestra que esté disponible en el otro.