PHP PhantomJS在JavaScript重新加载后获取页面内容



我正在尝试使用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();  
    }  
}

这清楚地设置了一个带有我的IP地址的cookie,然后重新加载页面。

我以这种方式从我的 PHP 服务器执行请求:

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require 'vendor/autoload.php';
use JonnyWPhantomJsClient;
$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()调用,如果是这种情况,有人可以告诉我如何遵循此重新加载吗?或者可能导致此问题的问题是什么?

编辑:使用基本使用指南中提到的此链接"http://jonnyw.me"时,脚本工作正常。

$request->setDelay(3(;延迟 3 秒到 exe js

最新更新