PhantomJS добавить более 1 куки к запросу - PullRequest
0 голосов
/ 01 апреля 2019

У меня проблемы с добавлением более 1 файла cookie в запрос, это мой javascript для 1 файла cookie:

var page = require('webpage').create();

phantom.addCookie({

  'name'     : 'TestCookie_Name_201312174009',   /* required property */
  'value'    : 'TestCookie_Value_164009',  /* required property */
  'domain'   : 'www.miau.com',        /* required property */
  'path'     : '/',
  'httponly' : true,
  'secure'   : false,
  'expires'  : (new Date()).getTime() + (1000 * 60 * 60)   /* <-- expires in 1 hour */
});



page.open('http://www.miau.com', function() {
    setTimeout(function() {
        //page.render('google.png');
        phantom.exit();
    }, 200);
});

И я запускаю его через прокси, чтобы увидеть запрос:

phantomjs --ignore-ssl-errors=true --disk-cache=true --proxy=http://127.0.0.1:8080 --web-security=false test.js

Cookie добавляется нормально, но потом я пробую 2 куки:

И это не работает, я также попробовал этот другой вариант, рассматривая его как список

var page = require('webpage').create();

phantom.addCookie([{

  'name'     : 'TestCookie_Name_201312174009',   /* required property */
  'value'    : 'TestCookie_Value_164009',  /* required property */
  'domain'   : 'www.miau.com',        /* required property */
  'path'     : '/',
  'httponly' : true,
  'secure'   : false,
  'expires'  : (new Date()).getTime() + (1000 * 60 * 60)   /* <-- expires in 1 hour */
}
,
{
  'name'     : 'TestCookie_Name_2',   /* required property */
  'value'    : 'TestCookie_Value_2',  /* required property */
  'domain'   : 'www.miau.com',        /* required property */
  'path'     : '/',
  'httponly' : true,
  'secure'   : false,
  'expires'  : (new Date()).getTime() + (1000 * 60 * 60)   /* <-- expires in 1 hour */
}]);

Но, опять же, мне не удается заставить его работать ...

Еще одна вещь, которую я пробовал, это:

var page = require('webpage').create();

phantom.addCookie({

  'name'     : 'TestCookie_Name_201312174009',   /* required property */
  'value'    : 'TestCookie_Value_164009',  /* required property */
  'domain'   : 'www.miau.com',        /* required property */
  'path'     : '/',
  'httponly' : true,
  'secure'   : false,
  'expires'  : (new Date()).getTime() + (1000 * 60 * 60)   /* <-- expires in 1 hour */
});

phantom.addCookie({

  'name'     : 'TestCookie_Name_2',   /* required property */
  'value'    : 'TestCookie_Value_2',  /* required property */
  'domain'   : 'www.miau.com',        /* required property */
  'path'     : '/',
  'httponly' : true,
  'secure'   : false,
  'expires'  : (new Date()).getTime() + (1000 * 60 * 60)   /* <-- expires in 1 hour */
});

page.open('http://www.miau.com', function() {
    setTimeout(function() {
        //page.render('google.png');
        phantom.exit();
    }, 200);
});

1 Ответ

2 голосов
/ 01 апреля 2019

Просмотр документов PhantomJS:

addCookie(Object) {Boolean}

Представлено: PhantomJS 1.7

Добавить файл cookie вCookieJar.Возвращает true в случае успешного добавления, в противном случае false.

Это не относится к более чем одному куки-файлу.Итак, глядя на phantom.cookies, которая является переменной, которая содержит cookiejar - мы находим следующее:

phantom.cookies {Object[]}

Введено: PhantomJS 1.7

Получить или установить Cookies для любого домена (хотя для настройки предпочтительнее использовать phantom.addCookie).Эти файлы cookie хранятся в CookieJar и будут предоставляться при открытии соответствующих веб-страниц.

Этот массив будет предварительно заполнен любыми существующими данными Cookie, хранящимися в файле cookie, указанном в параметрах конфигурации / командной строки запуска PhantomJS., если есть.

В приведенной выше цитате документации говорится, что переменная cookies внутри фантомного объекта является массивом объектов.Поэтому должно быть возможно назначить более одного.Беглый взгляд на тесты, мы заметили, что есть тест для назначения нескольких куки - см. Ссылочные строки кода из github:

Массив Cookies

Массив Cookies получает назначенный

По сути, это говорит о том, что можно назначить более одного cookie простым вызовом:

phantom.cookies = [{

  'name'     : 'TestCookie_Name_201312174009',   /* required property */
  'value'    : 'TestCookie_Value_164009',  /* required property */
  'domain'   : 'www.miau.com',        /* required property */
  'path'     : '/',
  'httponly' : true,
  'secure'   : false,
  'expires'  : (new Date()).getTime() + (1000 * 60 * 60)   /* <-- expires in 1 hour */
}
,
{
  'name'     : 'TestCookie_Name_2',   /* required property */
  'value'    : 'TestCookie_Value_2',  /* required property */
  'domain'   : 'www.miau.com',        /* required property */
  'path'     : '/',
  'httponly' : true,
  'secure'   : false,
  'expires'  : (new Date()).getTime() + (1000 * 60 * 60)   /* <-- expires in 1 hour */
}];
...