0

cURL と https を初めて使用します。httpsページにGETリクエストをしたいです。接続に成功しましたが、要求したページが表示されません。私が得るのは、HTTP 200 応答と 0 バイトだけです。

HTTP スニファーを使用して HTTP 会話のデバッグを試みました。また、ターゲット サイトからの証明書をサーバーに保存しました。私は何を間違っていますか?

また、 cURL を使用して HTTPS サイトに接続できないのアドバイスに従ってください。代わりに長さ 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 に答える