PhantomJS向请求添加了超过1个cookie

时间:2019-04-01 10:50:32

标签: javascript cookies phantomjs

我在向一个请求中添加多个cookie时遇到问题,这是我的1个cookie的javascript:

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个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 */
}
,
{
  '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 个答案:

答案 0 :(得分:2)

看看PhantomJS文档:

  

addCookie(Object) {Boolean}

     

介绍:PhantomJS 1.7

     

将Cookie添加到CookieJar。如果添加成功,则返回true,   否则为false

它不是指多个cookie。因此,查看phantom.cookies这个变量,它包含cookiejar-我们发现以下内容:

  

phantom.cookies {Object[]}

     

介绍:PhantomJS 1.7

     

获取或设置任何域的​​Cookies(尽管用于设置,使用   phantom.addCookie为首选)。这些Cookie存储在   CookieJar,并将在打开相关网页时提供。

     

此数组将由存储在其中的任何现有Cookie数据预先填充   在PhantomJS启动配置/命令行中指定的cookie文件   选项(如果有)。

上面的文档引用告诉我们,幻象对象内部的cookie变量是一个对象数组。因此,必须可以分配多个。 通过快速查看测试,我们注意到,存在一个用于分配多个Cookie的测试-请参阅github中引用的代码行:

Cookies Array

Cookies Array gets assigned

基本上,这告诉我们,只需调用即可分配多个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 */
}];