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.

Ähnliche Artikel