通过PHP加载FB file_get_contents()抛出'您正在使用不兼容的Web浏览器'错误

时间:2011-09-15 21:32:11

标签: php facebook

我使用GoDaddy进行PHP托管。最近一小时,我无法从我的PHP脚本加载facebook内容,因为它总是说

'您正在使用不兼容的Web浏览器'。

我知道这似乎是一个浏览器问题,但我确信这不是因为我在两台Windows机器上使用firefox + chrome + IE尝试过它而且我在mac机器上尝试过使用Firefox + safari浏览器。它每次都会得到同样的错误。

请您告诉我这可能是什么原因?

[尝试加载http://cabbie.apprumble.in/index.php?r=site/test]

在正常情况下,这应该正确加载facebook主页,而不是显示您的浏览器不兼容的错误。

[PS:我正在使用php调用file_get_contents(“http://facebook.com”)加载facebook页面,这个工作完全正常,直到一小时后。此外,如果我从浏览器外部加载网址,它可以正常工作,但如果使用file_get_contents调用从php中调用它,则会出现上述错误。)]

有人可以尽快回复,因为我因此而陷入困境。

谢谢, Kshitij

1 个答案:

答案 0 :(得分:3)

file_get_contents使用设置user_agent中php.ini文件中设置的用户代理。你可能无法改变这一点,因为你在godaddy托管。

您需要从file_get_contents切换到允许您控制用户代理的内容。你可以使用卷曲或套接字。这是一个卷曲的例子:

<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://www.facebook.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Firefox/3.6.13'); // set the user agent here

$data = curl_exec($ch);

echo $data;  // this is the homepage

Facebook试图通过不允许某些用户代理请求页面来阻止僵尸程序。您需要将用户代理欺骗为普通浏览器。