首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPQuery WebBrowser插件-使用cookies

PHPQuery WebBrowser插件-使用cookies
EN

Stack Overflow用户
提问于 2013-01-23 22:08:00
回答 1查看 1.1K关注 0票数 6

我正在尝试使用PHPQuery的WebBrowser插件登录一个网站。我可以成功登录,但我不确定如何重用上一次调用到下一次调用中的cookie。

代码语言:javascript
复制
$client = phpQuery::browserGet('https://website.com/login', 'success1');

function success1($browser) {
  $handle = $browser
    ->WebBrowser('success2');
  $handle 
    ->find('input[name=name]')
      ->val('username');
  $handle 
    ->find('input[name=pass]')
      ->val('password')
      ->parents('form')
        ->submit();
}

function success2($browser) {
    print $browser; // prints page showing I'm logged in

    // make authenticated requests here
}

如何使用会话/登录cookie发出其他请求?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-28 16:03:00

我已经查看了帮助您解决此问题的源代码。我的第一印象是代码写得很差。调试代码被注释掉了,到处都是打字错误,长达一英里的函数,等等。从长远来看,你可能真的想要考虑切换到不同的解决方案,因为如果作者在这段代码中更改了一些东西,你可能会因为升级而导致自己的代码崩溃。

也就是说,WebBrowser插件允许您访问浏览器对象本身,其中包含一个名为getLastResponse()的函数。这将返回一个Zend_Http_Response对象,理论上您可以使用它来获取cookies。

问题是您没有任何方法来设置这些cookie。您必须在第102行附近的某个位置修补web浏览器插件,以包含设置了cookies的您自己的HTTP request对象(phpQuery::ajax()的参数2),如下所示:

代码语言:javascript
复制
$xhr = phpQuery::ajax(array(
    'type' => 'GET',
    'url' => $url,
    'dataType' => 'html',
));

或者,您也可以对phpQuery.php 691行打补丁,使其包含一个全局cookie jar,您可以将其定义为单例或类似的东西。(就在上面写着$client->setCookieJar();的地方)。

再说一次,这段代码写得很差,你最好使用raw curl calls,即使它缺少一点功能。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14481677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档