Подтвердить что ты не робот

Поддерживает ли PhantomJS файлы cookie?

Поддерживает ли PhantomJS файлы cookie? Если да, где я могу найти информацию о API?

Я не могу понять это после поиска некоторое время.

4b9b3361

Ответ 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, соответствующий указанному имени.

Ответ 2

Он делает через WebPage.addCookie(), который, кстати, не работает ни для меня, ни для кто-то еще.

Вместо этого вы можете использовать это:

phantom.addCookie({
    'name': 'mycookie',
    'value': 'something really important',
    'domain': 'example.com'
})
page.open('http://example.com/url/path/', function() {
    console.log(page.cookies);
})

Ответ 3

Работа, которую я должен был сделать, - это выполнить javascript напрямую. Я использую Geb и сделал следующее:

js.exec("document.cookie='PHPSESSID=${cookie}';")

Когда selenium не удается, я всегда возвращаюсь к javascript для функциональности.

Ответ 4

Я еще не пробовал, но работает --cookies-file=/path/to/cookies.txt?

Это первый элемент в API ссылка...

Ответ 5

Недавно я просмотрел информацию на сессии. Вы должны установить cookie в объект страницы, например ниже (coffeescript):

@page.clearCookies()
@page.addCookie
  'name'     : "JSESSIONID"
  'value'    : "0000rN3YAlVAU0xdHkKc6BEzWj9:-1"
  'domain'   : 'some.domain.com'
  'path'     : '/'