2014-10-19 138 views
6

我想要使用CapserJS加载页面,但是如何发送从该页面的chrome的http请求标头导出的cookie?在CasperJS中为请求设置cookie

如:

“SUB = _2AkMjHt3gf8NhqwJRmPkQzG_qZIp_yA3EiebDAHzsJxJTHmMJ7IUyLkMN2K7WzRJvm-Tv3YY0xyZo; SUBP = 0033WrSXqPxfM72-Ws9jqgMF55529P9D9WhCT_2hbJ1W1Cc4xfF-mFPo;”

回答

6

有多种方式,但最简单的是使用的page.addCookiephantom.addCookie功能,这PhantomJS提供,但你必须要设置域名(和路径)。请记住,page.addCookie必须在加载页面上完成,而phantom.addCookie可以在之前完成。

var cookie = "someCookieName=Value; otherName=Value"; 
var domain = "example.com"; 
cookie.split(";").forEach(function(pair){ 
    pair = pair.split("="); 
    phantom.addCookie({ 
     'name': pair[0], 
     'value': pair[1], 
     'domain': domain 
    }); 
}); 

casper.start("http://example.com", function(){ 
    // check that cookie was indeed set: 
    this.capture("screen.png"); 
}).run(); 
+0

不工作在我身边 – Awakening 2016-03-18 03:22:45

+0

不是为我工作也:( – user2518430 2016-07-11 11:56:58

+1

@ user2518430我不知道为什么有些人有这个问题,但我可以说'域'属性是非常重要的。[这里](https://gist.github.com/artjomb/eead7b3da73d138be12de5681aa95b80)是一个示例脚本,它适用于我。 'addCookie'调用和一个不查看是否有区别。 – 2016-07-11 18:26:50

1

你可以尝试直接设置cookie头是这样的:

casper.start().thenOpen('http://yoururl', { 
    headers:{ "Cookie" : "CookieName=cookieValue" } 
    }, function() { 
    // ... 
}); 
相关问题