0

我是使用 cURL 和 https 的新手。我想向 https 页面发出 GET 请求。我连接成功,但没有得到我请求的页面。我得到的只是一个 HTTP 200 响应和 0 个字节。

我尝试使用 HTTP 嗅探器调试我的 HTTP 对话。此外,我已将来自目标站点的证书保存在我的服务器上。我究竟做错了什么?

此外,请遵循Can't connect to HTTPS site using cURL 的建议。而是返回 0 长度的内容。我能做些什么?

我去了http://curl.haxx.se/ca/cacert.pem,下载了证书并将其链接到我的代码中

$target = ADDR . 'xxx';
curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/qld_cert.crt");
curl_setopt($ch, CURLOPT_URL, $target); // Define target site
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Return page in string
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt"); // Tell PHP/CURL where to write cookies
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt"); // Tell PHP/CURL which cookies to send
$page = curl_exec($ch);

if(curl_exec($ch) === false)
{
    echo 'Curl error: ' . curl_error($ch);
}
else
{
    echo '';
}

// Check if any error occurred
if(curl_errno($ch))
{
    echo 'Curl error: ' . curl_error($ch);
}
4

1 回答 1

0

它工作得很好。但是,HTTP 嗅探器(尤其是 Fiddler)似乎无法解密 cURL 流量。为了测试我的回答,我打印了 $page 并得到了我期望的页面。

于 2013-10-09T13:05:00.227 回答