这是一个关于如何将 cookie 从一个 casperjs 页面持久保存到另一个页面的问题。
所以基本上我得到了一个 nodejs 文件,它生成 casperjs 作为工作人员来执行某些任务。一个是登录,一旦登录,我将 cookie 存储在一个文件中。
当我产生下一个 casper worker 时..我希望它使用 cookie 而不必再次登录..这两种方法都失败了:
首先:当我生成worker capserjs时,我添加了--cookies-file=./cookiefilename ie
var child = spawn('casperjs',['scrape.js','--cookies-file=./'+cookieFileName]);
第二:在casperjs工作文件中..我让它从一个文件中读取并设置cookie,即
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();
笔记:
- 前面提到从页面中
start
删除cookie?如果是这样,我该如何防止? - 我知道会话在同一个 phantomjs 页面对象中持续存在(参见此处https://gist.github.com/abbood/5347252),并且在同一个 casperjs 页面对象中发生同样的情况(参见此处https://gist.github.com/阿布德/5347287 )
- 请记住,我将 cookie 按原样存储在文件中(即根本没有任何 json/cookie 解析).. 所以我的 cookie 文件看起来完全像这样
路径=/\0\0\0\xc4\x41\x43OOKIE=C8ctADE3OC4xMzUuMTQ3LjM5LTI4NzQ5NzQ0LjMwMjkxMjYxAAAAAAAAAAAAAAAAmyoBAMo+ZFHhPWRRAQAAAAJWAADKPmRR4T1kUQAAAAAA-; 到期=格林威治标准时间 2015 年 4 月 9 日星期四 16:16:10;域=statse.domain.com;路径=/\0\0\0Yv1st=CE061E87215F2D73;到期=格林威治标准时间 2020 年 2 月 19 日星期三 14:28:00;域=.domain.com;路径=/\0\0\0\x84\x43OOKIE_ID=178.135.147.39-2368749744.30291261;过期=格林威治标准时间 2023 年 4 月 7 日星期五 16:16:11;域=cookie.domain.com;路径=/DCS000065_7K5I\0\0\0\xbe\x41\x43OOKIE=C8ctADE3OC4xMzUuMTQ3LjM5LTIzNjg3NDk3NDQuMzAyOTEyNjEAAAAAAAABAAAAQQAAAM0+ZFHNPmRAQAAAAAEAAADNPmRRzT5kUQAAAAAA-; 过期=格林威治标准时间 2023 年 4 月 7 日星期五 16:16:13;域=cookie.domain.com;路径=/)" 到期=格林威治标准时间 2020 年 2 月 19 日星期三 14:28:00;域=.domain.com;路径=/\0\0\0\x84\x43OOKIE_ID=178.135.147.39-2368749744.30291261;过期=格林威治标准时间 2023 年 4 月 7 日星期五 16:16:11;域=cookie.domain.com;路径=/DCS000065_7K5I\0\0\0\xbe\x41\x43OOKIE=C8ctADE3OC4xMzUuMTQ3LjM5LTIzNjg3NDk3NDQuMzAyOTEyNjEAAAAAAAABAAAAQQAAAM0+ZFHNPmRAQAAAAAEAAADNPmRRzT5kUQAAAAAA-; 过期=格林威治标准时间 2023 年 4 月 7 日星期五 16:16:13;域=cookie.domain.com;路径=/)" 到期=格林威治标准时间 2020 年 2 月 19 日星期三 14:28:00;域=.domain.com;路径=/\0\0\0\x84\x43OOKIE_ID=178.135.147.39-2368749744.30291261;过期=格林威治标准时间 2023 年 4 月 7 日星期五 16:16:11;域=cookie.domain.com;路径=/DCS000065_7K5I\0\0\0\xbe\x41\x43OOKIE=C8ctADE3OC4xMzUuMTQ3LjM5LTIzNjg3NDk3NDQuMzAyOTEyNjEAAAAAAAABAAAAQQAAAM0+ZFHNPmRAQAAAAAEAAADNPmRRzT5kUQAAAAAA-; 过期=格林威治标准时间 2023 年 4 月 7 日星期五 16:16:13;域=cookie.domain.com;路径=/)"