Den cURL-Handler von Guzzle für einen SOCKS-Proxy wählen
Ein Handler, der nur HTTP-Streams unterstützt, erhält keine SOCKS-Aushandlung aus einer Proxy-URL; wählen Sie einen unterstützenden Transport in der tatsächlichen PHP-Laufzeit.
Wenn Sie den Handler eines Guzzle-Clients bewusst wählen, kann ein cURL-basierter Stack SOCKS verwenden:
$stack = \GuzzleHttp\HandlerStack::create(
new \GuzzleHttp\Handler\CurlHandler()
);
$client = new \GuzzleHttp\Client([
'handler' => $stack,
'proxy' => 'socks5h://proxy.example.net:1080',
]);socks5h fordert den Proxy auf, den Zielnamen aufzulösen. Guzzle reicht den Endpunkt an libcurl weiter, daher muss der geladene libcurl-Build dieses Protokoll unterstützen. Die SOCKS5-Proxy-Liste liefert öffentliche Endpunktkandidaten für die Proxy-URL des Clients.
Wenn die Anwendung bereits einen Handler-Stack besitzt, prüfen Sie dessen zugrunde liegenden Transport, bevor Sie ihn ersetzen und Middleware verlieren. Ein auf PHP-HTTP-Streams beschränkter Handler kann SOCKS nicht implementieren, nur weil der Client diese Option erhält.
Prüfen Sie den Prozess, der die Anfrage ausführt. CLI-PHP und PHP-FPM können unterschiedliche Konfigurationsdateien und Erweiterungen laden; dass cURL in einem vorhanden ist, belegt nicht seine Verfügbarkeit im anderen.