phantom.addCookie不起作用

时间:2013-12-17 04:59:01

标签: cookies phantomjs

这是我做的一个例子:

/* global phantom:false */

var page = require('webpage').create();
var cookies = require('./cookie');

for (var i=0; i<cookies.length; i++) {
  (function(item){
    console.log('Add cookie:', item.name + '=' + item.value);
    phantom.addCookie({
      name: item.name,
      value: item.value,
      domain: item.domain,
      path: item.path,
      httponly: item.httpOnly,
      secure: item.secure,
      expires: item.expirationDate
    });
  })(cookies[i]);
}


page.open('http://www.html-kit.com/tools/cookietester/', function() {
  page.render('example.png');
  phantom.exit();
});

和cookie文件:

[{
    "domain": ".www.html-kit.com",
    "expirationDate": 1387428974.142711,
    "hostOnly": false,
    "httpOnly": false,
    "name": "TestCookie_Name_201312160042",
    "path": "/",
    "secure": false,
    "session": false,
    "storeId": "0",
    "value": "TestCookie_Value_230042"
}]

由于未知原因,它对我不起作用:

enter image description here

1 个答案:

答案 0 :(得分:1)

对于phantomJS 1.9.2,cookie的工作原理如下:

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

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


page.open('http://www.html-kit.com/tools/cookietester/', function() {
    //console.log(page.plainText);
    page.render('example.png');
    for (var i = 0; i < page.cookies.length; i++) {
        console.log(page.cookies[i].name + "=" + page.cookies[i].value);
    }
    phantom.exit();
});

另存为cookie.js然后用

运行
phantomjs cookie.js

请注意,cookie名称和值应该有特殊模式,否则html-kit看起来不接受它。

如果您想保存cookie供以后使用,可以添加--cookies-file选项