2014-10-19 2 views
6

Я хочу загрузить страницу с помощью CapserJS, но как я могу отправить cookie, который был экспортирован из заголовка HTTP-запроса хром на этой странице?Установить cookie для запроса в CasperJS

Такие, как:

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

ответ

6

Есть несколько способов, но самый простой будет использовать page.addCookie или phantom.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

+0

Не работает для меня тоже :( – user2518430

+1

@ user2518430 Я понятия не имею, почему некоторые люди имеют проблема с этим, но я могу сказать, что свойство 'domain' очень важно. [Здесь] (https://gist.github.com/artjomb/eead7b3da73d138be12de5681aa95b80) является примером скрипта, где он работает для меня. Создайте скриншот с вызов «addCookie» и один, чтобы не видеть, есть ли разница. –

1

Вы могли бы попытаться установить заголовки печенья непосредственно, как это:

casper.start().thenOpen('http://yoururl', { 
    headers:{ "Cookie" : "CookieName=cookieValue" } 
    }, function() { 
    // ... 
}); 
Смежные вопросы