2014-10-19 9 views
6

Ich möchte eine Seite mit CapserJS laden, aber wie kann ich Cookie senden, die von Chrome HTTP-Anfrage-Header auf dieser Seite exportiert wurde?Setzen Sie einen Cookie für die Anfrage in CasperJS

wie:

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

Antwort

6

Es gibt mehrere Möglichkeiten, aber die einfachste wäre, die page.addCookie oder phantom.addCookie Funktionen zu verwenden, die PhantomJS bietet, aber Sie würden die Domain setzen (und Pfad). Denken Sie daran, dass page.addCookie auf einer geladenen Seite durchgeführt werden muss, während phantom.addCookie vorher durchgeführt werden kann.

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

nicht auf meiner Seite arbeiten – Awakening

+0

nicht auch für mich arbeiten :( – user2518430

+1

@ user2518430 habe ich keine Ahnung, warum manche Menschen eine haben Problem mit diesem, aber ich kann sagen, dass die Domain-Eigenschaft sehr wichtig ist. [Hier] (https://gist.github.com/artjomb/eead7b3da73d138be12de5681aa95b80) ist ein Beispiel-Skript, wo es für mich funktioniert. Erstellen Sie einen Screenshot mit der 'addCookie' Anruf und einer ohne zu sehen, ob es einen Unterschied gibt. –

1

Sie könnten versuchen, die Cookie-Header direkt wie folgt festgelegt:

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