是的,从1.7 Phantom 开始,默认启用完整的 cookie 处理。 Cookie 会在进程的生命周期内保留。
如果您想在 Phantom 运行期间保留 cookie,可以使用command-line option cookies-file 指定存储持久性 cookie 的位置。
--cookies-file=/path/to/cookies.txt 指定存储持久 cookie 的文件名。
在页面脚本中,您可以使用常规的document.cookie 属性。与在浏览器中一样,此属性返回的字符串类似于将在 Cookie: HTTP 标头中发送的字符串。
在 Phantom 脚本中,您可以通过 page.cookies 访问页面的 cookie(受通常的来源限制),它返回 objects。
您还可以使用phantom.cookies 访问所有 cookie(来自所有域)。
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's jar
});
对于add/edit/delete cookies,使用WebPage 对象或phantom 对象的addCookie、deleteCookie 和clearCookies 方法。
当您使用WebPage 对象的方法时,您只修改页面可见的cookie。对其他域的访问被阻止。
但是,使用phantom 的 cookie 方法允许访问 所有 cookie。 phantom.addCookie 需要一个域(如果您不指定,WebPage.addCookie 假定为当前域),phantom.deleteCookie 删除与指定名称匹配的 任何 cookie。