使用curl / file_get_contents从facebook获取页面

时间:2012-10-30 14:37:55

标签: php facebook

我尝试从我的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;
}

仍然没有运气。我应该返回一个状态代码响应,它是404或200 ..取决于我是否登录到facebook。但它返回301,因为它将我的请求标识为不是常规浏览器请求。那么我在卷曲选项设置中缺少什么?

更新 我实际上要做的是复制这个功能:

该脚本将触发函数onload或onerror,具体取决于返回的状态代码..

该代码将检索该页面。但是,这个javascript方法很笨拙,并且在某些浏览器中会像firefox一样中断...因为它不是一个javascript文件。

1 个答案:

答案 0 :(得分:4)

您可能想要尝试的是使用CURL设置user_agent

$url = 'https://www.facebook.com/cocacola';
$http = curl_init($url);
$fake_user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3';
curl_setopt($http, CURLOPT_USERAGENT, $fake_user_agent); 
$result = curl_exec($http);

这是服务器查看的参数,以查看您正在使用的浏览器。我不是百分百确定这是否会绕过Facebook的支票并在页面上提供所有信息,但绝对值得一试! :)