簡體   English   中英

PHP PhantomJS 在 JavaScript 重新加載后獲取頁面內容

[英]PHP PhantomJS get page contents after JavaScript reload

我正在嘗試使用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 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()調用,如果是這種情況,有人可以告訴我如何進行重新加載嗎? 或者可能是什么問題導致了這種情況?

編輯:使用基本使用指南中提到的此鏈接“ http://jonnyw.me ”時,腳本工作正常。

$request->setDelay(3); 延遲 3s 到 exe js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM