如何在不同的casperjs进程之间保留cookie [英] how to persist cookies between different casperjs processes

查看:709
本文介绍了如何在不同的casperjs进程之间保留cookie的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一个关于如何保持cookie从一个casperjs页面到另一个问题。

this is a question about how to persist cookies from one casperjs page to another..

所以基本上我有一个nodejs文件,产生casperjs作为一个工人某些任务..一个是登录,一旦登录我将cookie存储在一个文件中。

so basically i got a nodejs file that spawns casperjs as a worker to do certain tasks.. one is to login, once logged in I store the cookie in a file.

当我产生下一个casper worker ..我想它使用cookie,而不必再次登录..这两种方法失败

when i spawn the next casper worker.. i want it to to use the cookie rather having to login again.. both these methods failed:

第一:当我产生工作者capserjs时,我添加--cookies-file =。/ cookiefilename ie
var child = spawn('casperjs',['scrape.js',' - cookies-file =。/'+ cookieFileName]);

first: when i spawn the worker capserjs I add the --cookies-file=./cookiefilename ie var child = spawn('casperjs',['scrape.js','--cookies-file=./'+cookieFileName]);

第二在casperjs工作文件中..我使它从一个文件读取和设置cookie

second: within the casperjs worker file.. I make it read and set the cookie from a file ie

var casper = require('casper').create();
var cookieFileName = 'monsterCookie.txt';

// grab cookies from file 
var fs = require('fs');
var utils = require('utils');
var cookies = fs.read(cookieFileName);

casper.page.setCookies(cookies); 

casper.start('domain/page.html', function() {
    //FAIL! cookies aren't used here
    this.debugHTML();
});

casper.run();

注意:


  1. 之前提到了 start code>从页面中删除Cookie?

  2. 我知道会话保持在同一个phantomjs页面对象中(请参阅此处https://gist.github.com/abbood/5347252 ),同样的情况发生在同一个casperjs页面对象中(请参阅https://gist.github.com/abbood/5347287

  3. 请记住,我将cookie存储在文件中(即不存在任何json / cookie解析)..所以我的cookie文件看起来像这样

  1. it was mentioned earlier that start removes cookies from the page? if so how do I prevent that?
  2. I know that sessions persist within the same phantomjs page object (see here https://gist.github.com/abbood/5347252) and same happens within the same casperjs page object (see here https://gist.github.com/abbood/5347287)
  3. keep in mind that I store cookies as is in the file (ie without any json/cookie parsing at all).. so my cookie file looks exactly like this




]
cookies =@ Variant(\0\0\0\x7f\0\0\0\x16QList\0\0\0\0\x1 \0\0\0\\\
\0\0\0YCNTR = LB;
expires = Tue,09-Apr-2013 17:12:05 GMT; domain = .recruiter.domain .com;
path = / \0\0\0qUID = 13eb22f-2.21.171.120-1365523938; expires = Mon,
30-Mar-2015 16:12:18 GMT; domain = .domain.com;
path = / \0\0\0] UIDR = 1365523938; expires = Mon,30-Mar-2015 16:12:18 GMT;
domain = .domain .com; path = / \0\0\0 [R_LANG = en; expires = Thu,2013年5月9日
16:16:06 GMT; domain = .recruiter.domain.com;
path = / \0\0\0\x94\x43 = 4gpUmUGr2jgDrs4xOJVrGaNbD8DtYSd1E6quyLhe3E4F3EAGhbRJucnDgRVDeHh0;
expires = Thu,2013年5月9日16:16:06 GMT;
domain = .recruiter.domain.com;
path = / \0\0\0\x94WT_FPC = id = 20cf093f17f2c6f3d041365495136954:lv = 1365495369854:ss = 1365495136954;
expires = Fri,07-Apr-2023 08:16:09 GMT; domain = .domain.com;
path = / \0\0\0\xc4\x41\x43OOKIE = C8ctADE3OC4xMzUuMTQ3LjM5LTI4NzQ5NzQ0LjMwMjkxMjYxAAAAAAAAAAABAAAAmyoBAMo + ZFHhPWRRAQAAAAJWAADKPmRR4T1kUQAAAAA-;
expires = Thu,09-Apr-2015 16:16:10 GMT; domain = statse.domain.com;
path = / \0\0\0Yv1st = CE061E87215F2D73; expires = Wed,19-Feb-2020 14:28:00
GMT; domain = .domain.com;
path = / \0\0\0\x84\x43OOKIE_ID = 178.135.147.39-2368749744.30291261;
expires = Fri,07-Apr-2023 16:16:11 GMT; domain = cookie.domain.com;
path = / DCS000065_7K5I\0\0\0\xbe\x41\x43OOKIE = C8ctADE3OC4xMzUuMTQ3LjM5LTIzNjg3NDk3NDQuMzAyOTEyNjEAAAAAAAABAAAAQQAAAM0 + ZFHNPmRRAQAAAAEAAADNPmRRzT5kUQAAAAA-;
expires = Fri,07-Apr-2023 16:16:13 GMT; domain = cookie.domain.com;
path = /)

[General] cookies="@Variant(\0\0\0\x7f\0\0\0\x16QList\0\0\0\0\x1\0\0\0\n\0\0\0YCNTR=LB; expires=Tue, 09-Apr-2013 17:12:05 GMT; domain=.recruiter.domain.com; path=/\0\0\0qUID=13eb22f-2.21.171.120-1365523938; expires=Mon, 30-Mar-2015 16:12:18 GMT; domain=.domain.com; path=/\0\0\0]UIDR=1365523938; expires=Mon, 30-Mar-2015 16:12:18 GMT; domain=.domain.com; path=/\0\0\0[R_LANG=en; expires=Thu, 09-May-2013 16:16:06 GMT; domain=.recruiter.domain.com; path=/\0\0\0\x94\x43=4gpUmUGr2jgDrs4xOJVrGaNbD8DtYSd1E6quyLhe3E4F3EAGhbRJucnDgRVDeHh0; expires=Thu, 09-May-2013 16:16:06 GMT; domain=.recruiter.domain.com; path=/\0\0\0\x94WT_FPC=id=20cf093f17f2c6f3d041365495136954:lv=1365495369854:ss=1365495136954; expires=Fri, 07-Apr-2023 08:16:09 GMT; domain=.domain.com; path=/\0\0\0\xc4\x41\x43OOKIE=C8ctADE3OC4xMzUuMTQ3LjM5LTI4NzQ5NzQ0LjMwMjkxMjYxAAAAAAAAAAABAAAAmyoBAMo+ZFHhPWRRAQAAAAJWAADKPmRR4T1kUQAAAAA-; expires=Thu, 09-Apr-2015 16:16:10 GMT; domain=statse.domain.com; path=/\0\0\0Yv1st=CE061E87215F2D73; expires=Wed, 19-Feb-2020 14:28:00 GMT; domain=.domain.com; path=/\0\0\0\x84\x43OOKIE_ID=178.135.147.39-2368749744.30291261; expires=Fri, 07-Apr-2023 16:16:11 GMT; domain=cookie.domain.com; path=/DCS000065_7K5I\0\0\0\xbe\x41\x43OOKIE=C8ctADE3OC4xMzUuMTQ3LjM5LTIzNjg3NDk3NDQuMzAyOTEyNjEAAAAAAAABAAAAQQAAAM0+ZFHNPmRRAQAAAAEAAADNPmRRzT5kUQAAAAA-; expires=Fri, 07-Apr-2023 16:16:13 GMT; domain=cookie.domain.com; path=/)"


推荐答案

strong>

Saving cookies:

var fs = require('fs');
var cookies = JSON.stringify(phantom.cookies);
fs.write(cookieFilename, cookies, 644);

Cookie:

var fs = require('fs');
var data = fs.read(cookieFilename);
phantom.cookies = JSON.parse(data);



phantom 是PhantomJS中的全局变量。有关详情,请参阅 wiki

The phantom is global variable in PhantomJS. More information you can get in wiki

这篇关于如何在不同的casperjs进程之间保留cookie的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆