我在向一个请求中添加多个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);
});
答案 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
中引用的代码行:
基本上,这告诉我们,只需调用即可分配多个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 */
}];