Я пытаюсь получить содержимое этой страницы с php-phantomjs .После некоторых копаний я заметил, что эта страница сначала загружает этот код JavaScript:
function setCookie(c_name, value, expiredays) { // Local function for setting a value of a cookie
var exdate = new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie = c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + exdate.toGMTString()) + ";path=/";
}
function getHostUri() {
var loc = document.location;
return loc.toString();
}
setCookie('YPF8827340282Jdskjhfiw_928937459182JAX666', '[request_ip_addr]', 10);
try {
location.reload(true);
} catch (err1) {
try {
location.reload();
} catch (err2) {
location.href = getHostUri();
}
}
, который явно устанавливает cookie с моим IP-адресом, а затем перезагружает страницу.
Я выполняю запросс моего сервера PHP следующим образом:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require 'vendor/autoload.php';
use JonnyW\PhantomJs\Client;
$client = Client::getInstance();
$client->getEngine()
->debug(true)
->addOption("--cookies-file='/cookies.txt'");
$request = $client->getMessageFactory()->createRequest();
$response = $client->getMessageFactory()->createResponse();
$request->setMethod('GET');
$request->setUrl('https://www.alarabiya.net/.mrss/ar.xml');
$client->send($request, $response);
var_dump($client->getLog());
if ($response->getStatus() === 200) {
echo $response->getContent();
} else {
echo 'Error loading data';
}
, который возвращает пустую страницу, var_dump($response->getContent())
показывает, что это NULL .
Я думаю, что PhantomJSне выполняет вызов location.reload()
, если это так, может кто-нибудь сказать мне, как заставить выполнить эту перезагрузку?Или в чем может быть проблема, вызывающая это?
EDIT : скрипт работает нормально при использовании этой ссылки 'http://jonnyw.me', упомянутой в руководстве по основному использованию.