Hai*_*ine 7 php proxy curl socks ssh-tunnel
cURL +代理noob在这里,很难过.我无法通过代理从远程安全服务器检索网页.显然,远程开发人员已正确设置了所有内容,以便以下命令行指令正常工作并返回我们要查找的内容:
curl -k --socks5-hostname localhost:xxxx https://hostname/
Run Code Online (Sandbox Code Playgroud)
但是,以下PHP不会回显请求的网页.相反,它回应错误'无法解析主机名':
$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;
Run Code Online (Sandbox Code Playgroud)
如果$ url更改为公共页面(例如Google),请求就会成功,并且每个人都很满意.
如果连接发生任何变化,则连接需要SSH隧道.隧道是开放的并且正常运行,正如命令行请求成功所证明的那样.
这里有什么明显的错过吗?
看起来好像CURLPROXY_SOCKS5_HOSTNAME没有在PHP中定义,但您可以显式使用其等于7的值.
试试这个:
curl_setopt($ch, CURLOPT_PROXYTYPE, 7);
Run Code Online (Sandbox Code Playgroud)