Escolher o handler cURL do Guzzle para um proxy SOCKS
Um handler limitado a fluxos HTTP não obtém negociação SOCKS a partir de uma URL de proxy; escolha um transporte compatível no ambiente PHP real.
Ao escolher deliberadamente o handler de um cliente Guzzle, uma pilha baseada em cURL pode usar SOCKS:
$stack = \GuzzleHttp\HandlerStack::create(
new \GuzzleHttp\Handler\CurlHandler()
);
$client = new \GuzzleHttp\Client([
'handler' => $stack,
'proxy' => 'socks5h://proxy.example.net:1080',
]);socks5h pede ao proxy que resolva o nome de destino. O Guzzle passa o endpoint ao libcurl, portanto a compilação do libcurl carregada deve oferecer suporte a esse protocolo. A lista de proxies SOCKS5 fornece candidatos públicos de endpoint para a URL de proxy do cliente.
Se a aplicação já possui uma pilha de handlers, examine o transporte subjacente antes de substituí-la e perder middleware. Um handler limitado a fluxos HTTP do PHP não pode implementar SOCKS só porque o cliente recebe esta opção.
Verifique o processo que faz a requisição. CLI PHP e PHP-FPM podem carregar arquivos de configuração e extensões diferentes; o cURL aparecer em um não prova que esteja disponível no outro.