PHP通过代理连接到HTTPS站点

时间:2014-03-08 08:54:51

标签: php curl https proxy

我遇到了以下问题:有一个HTTPS网站,我需要通过代理连接到它。这是我的cURL setopts:

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY, '100.100.100.100:8080');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

echo curl_error($ch);

输出失败连接到######。com:8080;没有错误

其中100.100.100.100:8080是有效HTTPS代理的占位符。这不起作用。如何通过代理使cURL连接到HTTPS网站?我真的很想要一个不仅可以通过HTTPS代理工作的灵魂。另外,我最喜欢使用cURL的方法,但是如果有更好的方法,没有cURL,我可以使用它。

1 个答案:

答案 0 :(得分:2)

<强>更新 添加

curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);

它将阻止您的HTTP代理解析您的请求标头并更加透明地行动 - 就像隧道一样。


初步回答,没有意思

您的代码看起来不错,我认为您检查了一些琐碎的问题,因此问题可能是SSL证书验证失败。如果证书是通过示例自签名的话就是这种情况。 试试

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

允许允许使用自签名证书的请求。