gpt4 book ai didi

PHPQuery WebBrowser 插件 - 使用 cookie

转载 作者:可可西里 更新时间:2023-11-01 13:26:36 25 4
gpt4 key购买 nike

我正在尝试使用 PHPQuery 的 WebBrowser 插件登录网站。我能够成功登录,但我不确定如何将上一次调用的 cookie 重新用于下一次调用。

$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
}

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

最佳答案

我查看了源代码来帮助您解决这个问题。我的第一印象是代码写得非常糟糕。调试代码被注释掉,到处都是拼写错误,一英里长的函数等等。从长远来看,您真的可能想考虑切换到不同的解决方案,因为如果作者更改了这段代码中的某些内容,您最终可能会拥有自己的解决方案代码因升级而损坏。

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

问题是您无法设置这些 cookie。您必须在第 102 行附近的某处修补 Web 浏览器插件,以包含您自己的 HTTP 请求对象(phpQuery::ajax() 的参数 2)和您设置的 cookie,在此处:

$xhr = phpQuery::ajax(array(
'type' => 'GET',
'url' => $url,
'dataType' => 'html',
));

或者,您也可以修补 phpQuery.php 行 691 以包含一个全局 cookie jar,您可以将其定义为单例。 (就在它说 $client->setCookieJar(); 的地方)。

同样,这段代码写得非常糟糕,使用 raw curl calls 可能会好得多,即使它缺少一些功能。

关于PHPQuery WebBrowser 插件 - 使用 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14481677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com