PHPQuery плагин веб - браузера- использование cookies
Я пытаюсь войти на веб-сайт с помощью плагина веб-браузера PHPQuery. Я могу успешно войти в систему, но я не уверен, как повторно использовать куки от предыдущего вызова к следующему.
$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 сеанса/входа?
1 ответов
Я посмотрел на исходный код, чтобы помочь вам с этой проблемой. Мое первое впечатление было, что код написан очень плохо. Отладка кода комментируется, опечатки повсюду,функции длиной в милю и т. д. Вы действительно можете захотеть переключиться на другое решение в долгосрочной перспективе, потому что если автор что-то изменит в этом коде, вы можете получить свой собственный код, нарушенный обновлением.
это, как говорится, плагин WebBrowser дает вам доступ к сам объект браузера, который содержит функцию getLastResponse (). Это возвращает Zend_Http_Response
"объект", который вы можете теоретически используйте, чтобы получить куки.
проблема в том, что у вас нет никакого способа установить эти куки. Вам нужно будет исправить плагин веб-браузера где-то вокруг строки 102, чтобы включить свой собственный объект HTTP-запроса (параметр 2 для phpQuery::ajax()
) С вашим набором печенья, вокруг здесь:
$xhr = phpQuery::ajax(array(
'type' => 'GET',
'url' => $url,
'dataType' => 'html',
));
в качестве альтернативы вы также можете патч phpQuery.php
строка 691 такие куков можно определить как синглтон или так. (Прямо там, где написано $client->setCookieJar();
).
опять же, этот код очень плохо написан, вам, вероятно, намного лучше использовать raw curl calls, даже если ему не хватает немного функциональности.