浏览登录系统php-phantomjs后面的页面

时间:2017-03-17 02:44:52

标签: php login php-phantomjs

情景:

我有一个目标网站,我需要抓取并截取个人帐户Feed的屏幕截图。

需要:

  1. 登录网站。
  2. 浏览个人专区。
  3. 抓取页面。
  4. 代码:

    require 'vendor/autoload.php';
    
    use JonnyW\PhantomJs\Client;
    
        $client = Client::getInstance();
        $client->getEngine()->setPath('C:\xampp\htdocs\phantomjs\bin\phantomjs.exe');
        $client->getProcedureCompiler()->clearCache();
        $client->isLazy();
        $delay = 15; // 5 seconds
        $width  = 1366;
        $height = 768;
        $top    = 0;
        $left   = 0;
    
    
        $request  = $client->getMessageFactory()->createCaptureRequest();
        $response = $client->getMessageFactory()->createResponse();
        $request->setDelay($delay);
        $request->setTimeout(10000);
    
    
        $data = array(
        'login' => '***',
        'password' => '***',
        );
    
        $request->setMethod('POST');
        $request->setUrl('login-url');
        $request->setRequestData($data); // Set post data
        $request->setOutputFile('screenshot.jpg');
        $request->setViewportSize($width, $height);
        $request->setCaptureDimensions($width, $height, $top, $left);
    
        $client->send($request, $response); 
    
        $file = fopen("1.txt","a");
        fwrite($file,$response->getContent());
        fclose($file);
    

    问题:

    如何在不丢失cookie和会话的情况下浏览个人页面URL?

    我已经尝试过只在同一个请求上再次更改setUrl,但它无效。

        $request->setMethod('GET');
        $request->setUrl('personal-page-url');
        $request->setOutputFile('screenshot1.jpg');
    
        $client->send($request, $response);
    
        $file = fopen("2.txt","a");
        fwrite($file,$response->getContent());
        fclose($file);
    

1 个答案:

答案 0 :(得分:1)

根据这个issue on github ,cookies还有一个不确定的问题。你可以关注它。

  

Cookie和php-phantomjs#124 Open lucl22于10月1日开启此问题,   2016年·3条评论

如果您的目标网页没有像以下那样多的ajax数据传输,您可以使用其他方式进行报废:

如果你真的需要运行js,你可以使用其他web驱动程序来运行php