我使用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
答案 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试图通过不允许某些用户代理请求页面来阻止僵尸程序。您需要将用户代理欺骗为普通浏览器。