PhantomJS是否支持cookie?

Niy*_*yaz 33 javascript cookies phantomjs

PhantomJS是否支持cookie?如果是,我在哪里可以找到API详细信息?

现在搜索一段时间后,我无法弄明白.

jos*_*736 43

是的,从1.7开始, Phantom具有完整的cookie处理功能,默认启用.Cookie会在整个过程中保留.

如果您希望在Phantom运行期间保留cookie,可以使用命令行选项cookies-file指定存储持久性cookie的位置.

--cookies-file=/path/to/cookies.txt 指定用于存储持久性cookie的文件名.

在页面脚本中,您可以使用常规document.cookie属性.与在浏览器中一样,此属性返回类似于将在Cookie:HTTP标头中发送的字符串的字符串.

在Phantom脚本中,您可以访问页面的cookie(受通常的原始限制)page.cookies,返回对象.

您还可以使用访问所有 Cookie(来自所有域)phantom.cookies.

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
});
Run Code Online (Sandbox Code Playgroud)

添加/修改/删除Cookie,使用addCookie,deleteCookieclearCookies任何一个的方法,WebPage对象或phantom对象.

使用WebPage对象的方法时,只修改页面可见的cookie.阻止访问其他域.

但是,使用phantomcookie方法可以访问所有 cookie. phantom.addCookie需要域(WebPage.addCookie如果未指定域,则假定当前域),并phantom.deleteCookie删除与指定名称匹配的任何 cookie.


joh*_*odo 12

它通过WebPage.addCookie() -这亦不起作用既不是我,也不别人.

您可以使用此代替:

phantom.addCookie({
    'name': 'mycookie',
    'value': 'something really important',
    'domain': 'example.com'
})
page.open('http://example.com/url/path/', function() {
    console.log(page.cookies);
})
Run Code Online (Sandbox Code Playgroud)