Очевидно, что в данном конкретном случае Facebook проверяет только заголовок HTTP "User-Agent
".
Если я использую эту часть кода, основанную на curl , которая позволяет мне устанавливать множество оптонов, используя curl_setopt
:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.facebook.com/index.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
curl_close($ch);
echo $html;
Я получаю то же сообщение, что и вы.
Но, если я попытаюсь отправить User-Agent
, который соответствует Firefox (я просто скопировал тот, который фактически отправляет мой настоящий Firefox):
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.facebook.com/index.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090910 Ubuntu/9.04 (jaunty) Shiretoko/3.5.3");
$html = curl_exec($ch);
curl_close($ch);
echo $html;
Я получаю настоящую домашнюю страницу Facebook, а не это сообщение об ошибке несовместимого браузера.
Конечно, это не решит проблему невыполнения Javascript ...
... Но выполнение Javascript без браузера - довольно сложная вещь (даже Google не решил это ^^)
Существуют механизмы, позволяющие запускать код Javascript без браузера (например, Rhino; или расширение Spidermonkey PECL , для PHP) ; но даже если они позволят вам запускать код Javascript, у вас не будет всей среды и методов, предоставляемых браузером, на которые полагаются веб-сайты ...
Идея, если вам нужно сканировать Javascript-зависимый веб-сайт, может заключаться в использовании Selenium , который открывает реальный браузер (т. Е. Firefox или другой) , контролируя его из вашего PHP код через Selenium RC .
Но это означает, что у вас должна быть графическая среда и браузер на вашем PHP-компьютере; это также довольно тяжело и медленно - намного медленнее, чем просто загрузка веб-страницы ^^