Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php casperjs持久登录_Php_Phantomjs_Casperjs - Fatal编程技术网

Php casperjs持久登录

Php casperjs持久登录,php,phantomjs,casperjs,Php,Phantomjs,Casperjs,我正在运行Phantomjs,Casperjs和 我希望登录在网站上保持不变,我不想每次启动casper都要登录 现在我尝试了许多站点,我启用了cookie并进行了测试,它们可以工作,并且在不同的会话中是相同的 但是登录仍然不存在 我试过使用磁盘缓存。没有什么变化 Casper UserAgent、viewPortWidth/height不会更改。IP是相同的。所以指纹认证应该仍然有效 它缺少什么 编辑:一些代码: //Casper构造函数和设置: private $_userAgent

我正在运行Phantomjs,Casperjs和

我希望登录在网站上保持不变,我不想每次启动casper都要登录

现在我尝试了许多站点,我启用了cookie并进行了测试,它们可以工作,并且在不同的会话中是相同的

但是登录仍然不存在

我试过使用磁盘缓存。没有什么变化

Casper UserAgent、viewPortWidth/height不会更改。IP是相同的。所以指纹认证应该仍然有效

它缺少什么

编辑:一些代码:

//Casper构造函数和设置:

    private $_userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36';
    private $_viewPortWidth = 1345;
    private $_viewPortHeight = 749;
    private $_temp_dir = '/tmp';
    private $_path2casper = '/usr/local/bin/'; //path to CasperJS
//

//登录

    $this->casper->start($this->LINK_LOGIN);

    $this->casper->waitForSelector('input#btnLogin', 3000);
    $this->casper->fillForm(
        'form[action="/accedi"]',
        array(
            'Username' => $this->Account,
            'Password' => $this->Password
        ), true);
    $this->casper->wait(1000);

    $this->casper->run();
    if($this->CheckLogin($this->casper->getCurrentPageContent()))
        echo "<br> <b>Login Success</b>";
    else
        echo "<br> <b>Error Login</b>";
$this->casper->start($this->LINK\u LOGIN);
$this->casper->waitForSelector('input#btnLogin',3000);
$this->casper->fillForm(
'form[action=“/accedi”]”,
排列(
“用户名”=>$this->Account,
“密码”=>$this->Password
),对);
$this->casper->wait(1000);
$this->casper->run();
如果($this->CheckLogin($this->casper->getCurrentPageContent()))
回显“
登录成功”; 其他的 回显“
错误登录”;
//登录后测试

    $this->casper->start($this->LINK_MAIN_PAGE);

    $this->casper->wait(2000);
    $this->casper->run();

    if($this->CheckLogin($this->casper->getCurrentPageContent()))
        echo "<br> <b>Login Success</b>";
    else
        echo "<br> <b>Error Login</b>";
$this->casper->start($this->LINK\u主页);
$this->casper->wait(2000);
$this->casper->run();
如果($this->CheckLogin($this->casper->getCurrentPageContent()))
回显“
登录成功”; 其他的 回显“
错误登录”;
您需要将Cookie放在您这边:

$casper->setOptions(array(
    'ignore-ssl-errors' => 'yes',
    'cookies-file' => 'cookies.txt'
));

正如我所写的,我已经保存了饼干,它们很好用。但这似乎不足以让我登录。你能登录到任何其他已建立的网站并在那里保持会话吗?比如说,Twitter还是Facebook?如果是,那么问题就出在你的目标站点上。如果不是,那么问题可能出在你的代码中,你需要在这里展示一个最小的工作示例。感谢回复,添加了一些代码。我用它测试了饼干,它还记得我最后一次来过。所以饼干应该很好用。我尝试过其他网站,比如亚马逊,他们只是不记得我。。。我认为这是新的指纹认证,但…似乎你每次都在登录,你是否尝试先检查你是否已登录,然后再登录?是的,这只是示例代码我无法解决此问题。coockie工作正常,但当我返回站点时,我不会保持日志记录。当我用外部页面检查IP时,它会向我返回一个IPv6,这可能是问题所在吗?我如何设置使用IPv4?我认为IP问题值得提出自己的问题。
$casper->setOptions(array(
    'ignore-ssl-errors' => 'yes',
    'cookies-file' => 'cookies.txt'
));