可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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;"
回答1:
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();
回答2:
You could try to set the cookie headers directly like this:
casper.start().thenOpen('http://yoururl', { headers:{ "Cookie" : "CookieName=cookieValue" } }, function() { // ... });