Ответ 1
Да, с 1.7 Phantom имеет полную обработку файлов cookie, включенную по умолчанию. Куки сохраняются на протяжении всего процесса.
Если вы хотите сохранить файлы cookie в рамках Phantom, там параметр командной строки cookies-file
, где вы можете указать, где хранить постоянные файлы cookie.
--cookies-file=/path/to/cookies.txt
указывает имя файла для хранения постоянных файлов cookie.
На странице script вы можете использовать обычное свойство document.cookie
. Как и в браузерах, это свойство возвращает строку, аналогичную той, которая будет отправлена в заголовке Cookie:
HTTP.
В Phantom script вы можете получить доступ к файлам cookie для страницы (с учетом обычных ограничений происхождения) через page.cookies
, который возвращает объекты.
Вы также можете получить доступ ко всем файлам cookie (из всех доменов) с помощью phantom.cookies
.
var page = require('webpage').create();
page.open('http://example.com', function (status) {
page.evaluate(function() {
document.cookie; // => "test=test-value;"
});
page.cookies; // => [{
// domain: "example.com",
// expires: "Wed, 08 Jan 2014 00:00:00 GMT"
// httponly: false,
// name: "test",
// path: "/",
// secure: false,
// value: "test-value"
// }]
phantom.cookies; // contains ALL cookies in Phantom jar
});
Чтобы добавлять/редактировать/удалять файлы cookie, используйте методы addCookie
, deleteCookie
и clearCookies
объекта WebPage
или phantom
.
Когда вы используете методы объекта WebPage
, вы изменяете только файлы cookie, видимые на странице. Доступ к другим доменам заблокирован.
Однако использование методов cookie phantom
позволяет получить доступ ко всем файлам cookie. phantom.addCookie
требуется домен (WebPage.addCookie
принимает текущий домен, если вы его не укажете), а phantom.deleteCookie
удаляет файл любой cookie, соответствующий указанному имени.