De cURL-handler van Guzzle kiezen voor een SOCKS-proxy
Een handler die alleen HTTP-stromen ondersteunt, krijgt geen SOCKS-onderhandeling uit een proxy-URL; kies een ondersteunend transport in de werkelijke PHP-omgeving.
Wanneer u bewust de handler van een Guzzle-client kiest, kan een cURL-gebaseerde stack SOCKS gebruiken:
$stack = \GuzzleHttp\HandlerStack::create(
new \GuzzleHttp\Handler\CurlHandler()
);
$client = new \GuzzleHttp\Client([
'handler' => $stack,
'proxy' => 'socks5h://proxy.example.net:1080',
]);socks5h vraagt de proxy om de bestemmingsnaam op te lossen. Guzzle geeft het eindpunt door aan libcurl, dus de geladen libcurl-build moet dat protocol ondersteunen. De SOCKS5-proxylijst levert openbare eindpuntkandidaten voor de proxy-URL van de client.
Als de toepassing al een handlerstack heeft, onderzoek dan het onderliggende transport voordat u die vervangt en middleware verliest. Een handler die beperkt is tot PHP HTTP-stromen kan SOCKS niet implementeren alleen omdat de client deze optie ontvangt.
Controleer het proces dat het verzoek doet. CLI-PHP en PHP-FPM kunnen verschillende configuratiebestanden en extensies laden; dat cURL in de ene aanwezig is, bewijst niet dat het in de andere beschikbaar is.