huangjingscnc
huangjingscnc

Reputation: 91

Set cookie for request in CasperJS

I want to load a page using CapserJS, but how can I send cookie which was exported from chrome's http request header at that page?

Such as:

"SUB=_2AkMjHt3gf8NhqwJRmPkQzG_qZIp_yA3EiebDAHzsJxJTHmMJ7IUyLkMN2K7WzRJvm-Tv3YY0xyZo; SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WhCT_2hbJ1W1Cc4xfF-mFPo;"

Upvotes: 8

Views: 7664

Answers (2)

Mario Varchmin
Mario Varchmin

Reputation: 3782

You could try to set the cookie headers directly like this:

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

Upvotes: 1

Artjom B.
Artjom B.

Reputation: 61892

There are multiple ways, but the easiest would be to use the page.addCookie or phantom.addCookie functions which PhantomJS provides, but you would have to set the domain (and path). Keep in mind that page.addCookie has to be done on a loaded page whereas phantom.addCookie can be done before.

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();

Upvotes: 6

Related Questions