アプリ「Fiddler」を使用して、PHP cURL を介して Web サイトへの GET 試行をデバッグしています。cURL トラフィックを確認するには、cURL 接続で Fiddler プロキシを使用するように指定する必要がありました (以下のコードを参照)。
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888');
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_REFERER, "http://domain.com");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt");
curl_setopt($ch, CURLOPT_URL, "http://domain.com");
$response = curl_exec($ch);
しかし、問題は、Fiddler ではこれしか表示されないことです。
リクエスト (domain.com は単なるエイリアスです):
CONNECT domain.com:80 HTTP/1.1
応答:
HTTP/1.1 200 Blind-Connection Established
ブラウザーで Web サイトを手動で読み込むと、Fiddler はさらに多くの情報を提供してくれます。Cookie、ヘッダー情報、および GET 経由で受信した内容を確認できます。
Fiddler が PHP cURL からより有用な情報を参照できない理由はありますか?
編集: Tools / Fiddler Options / HTTPS内の「Enable HTTPS Decryption」オプションをオンにしてみました(cURLにHTTPSを使用するように指示しなかったため、なぜ使用する必要があるのか わかりません)。
残念ながら、この設定を変更すると、次の応答が得られます。
HTTP/1.1 502 Connection failed
編集:アプリ「Charles」は、Fiddler よりもはるかに多くの情報を表示してくれますが、私は Fiddler の方が好きなので、本当に理解したいと思っています。