PhantomJS 支持 cookie 吗?如果支持,API 细节在哪里可以找到?
我已经搜索了一段时间,但仍然无法弄清楚。
PhantomJS 支持 cookie 吗?如果支持,API 细节在哪里可以找到?
我已经搜索了一段时间,但仍然无法弄清楚。
是的,从1.7版本开始,Phantom具有完整的Cookie处理功能,默认情况下启用。Cookie将保留在进程的生命周期内。
如果您想在Phantom的多次运行中保留Cookie,则可以使用命令行选项cookies-file
指定持久Cookie的存储位置。
--cookies-file=/path/to/cookies.txt
指定要存储持久Cookie的文件名。
在页面脚本中,您可以使用常规的document.cookie
属性。与浏览器一样,此属性返回类似于将在Cookie:
HTTP头部发送的字符串。
在Phantom脚本中,您可以通过page.cookies
访问页面的Cookie(受常规来源限制),该属性返回对象。
您还可以使用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
});
WebPage
对象或phantom
对象的addCookie
、deleteCookie
和clearCookies
方法。WebPage
对象的方法时,您只能修改页面可见的 cookies。对其他域名的访问将被阻止。phantom
的 cookie 方法允许访问所有cookies。phantom.addCookie
需要一个域名(如果您没有指定域名,WebPage.addCookie
会假设当前域名),phantom.deleteCookie
会删除匹配指定名称的任何cookie。console.log(document.cookie);
时,程序就会停止。 - Niyazdocument.cookie
现在可以正常使用了。请查看修改记录。 - josh3736它可以通过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);
})
WebPage.addCookie()
由于某些原因无法工作,此代码片段展示了另一种设置cookie的方法。 - johndodojs.exec("document.cookie='PHPSESSID=${cookie}';")
最近我在会话中对信息进行了评分。您应该在页面对象中设置cookie,如下所示(coffeescript):
@page.clearCookies()
@page.addCookie
'name' : "JSESSIONID"
'value' : "0000rN3YAlVAU0xdHkKc6BEzWj9:-1"
'domain' : 'some.domain.com'
'path' : '/'
我还没有尝试过,但是--cookies-file=/path/to/cookies.txt
不起作用吗?
这是API参考文档中的第一项...