0

我尝试从我的 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,因为它将我的请求标识为不是常规浏览器请求。那么我在 curl 选项设置中缺少什么?

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

脚本会根据返回的状态码触发 onload 或 onerror 函数。

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

4

1 回答 1

4

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

$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);

这是服务器查看您使用的浏览器的参数。我不能 100% 确定这是否会绕过 Facebook 的检查并为您提供页面上的所有信息,但绝对值得一试!:)

于 2012-10-30T14:41:51.733 回答