次のように、Facebookページからコンテンツを取得しようとしています:
echo file_get_contents("http://www.facebook.com/dma.y");
問題は、ページが表示されず、ブラウザをアップグレードする必要があるという別のページにリダイレクトされることです。次に、いくつかのヘッダーを含むリクエストを送信して、curl を使用してフェッチすることを考えました。
echo get_follow_url('http://www.facebook.com/dma.y');
function get_follow_url($url){
// must set $url first. Duh...
$http = curl_init($url);
curl_setopt($http, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($http, CURLOPT_HTTPHEADER, get_headers('http://google.com'));
// do your curl thing here
$result = curl_exec($http);
if(curl_errno($http)){
echo "<br/>An error has been thrown!<br/>";
exit();
}
$http_status = curl_getinfo($http, CURLINFO_HTTP_CODE);
curl_close($http);
return $http_status;
}
それでも運はありません。Facebookにログインしているかどうかに応じて、404または200のステータスコード応答が返されるはずです。しかし、それは 301 を返します。これは、私の要求が通常のブラウザー要求ではないと識別されるためです。curlオプション設定で何が欠けていますか?
更新 私が実際にやろうとしているのは、この機能を複製することです:
スクリプトは、返されたステータス コードに応じて、関数 onload または onerror をトリガーします。
そのコードはページを取得します。ただし、その javascript メソッドはぎこちなく、firefox などの一部のブラウザーでは機能しません。これは javascript ファイルではないためです。