La solicitud cURL con el proxy socks5 falla al usar PHP, pero funciona a través de la línea de comando
ssh-tunnel (1)
Parece que CURLPROXY_SOCKS5_HOSTNAME no está definido en PHP, pero puede usar explícitamente su valor que es igual a 7.
Prueba esto:
curl_setopt($ch, CURLOPT_PROXYTYPE, 7);
cURL + proxy novo aquí, teniendo un momento difícil. Tengo problemas para recuperar una página web desde un servidor seguro remoto a través de un proxy. Todo aparentemente ha sido configurado correctamente por un desarrollador remoto, de modo que la siguiente instrucción de línea de comando funciona y devuelve lo que estamos buscando:
curl -k --socks5-hostname localhost:xxxx https://hostname/
Sin embargo, el siguiente PHP no se hace eco de la página web solicitada. En su lugar, repite el error "No se pudo resolver el nombre de host":
$proxy = ''localhost:xxxx'';
$url = ''https://hostname/'';
//$proxyauth = ''user:password'';
$ch = curl_init();
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_URL, $url);
$curl_scraped_page = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error)
echo $error;
elseif ($curl_scraped_page)
echo $curl_scraped_page;
Si el $ url se cambia a una página pública, como Google, la solicitud es exitosa y todos están contentos.
La conexión requiere un túnel SSH si eso cambia algo. El túnel está abierto y funcionando, como lo demuestra la solicitud de la línea de comando.
¿Hay algo obvio que se echa de menos aquí?