casperjs对cookie的处理

怎么获取cookie
先从phantomjs说起

phantomjs的处理:

phantomjs支持命令行选项用于存储cookie:

--cookies-file=/path/to/cookies.txt

phantomjs中的webpage对象有cookies属性可以获取到对应的cookie

var webPage = require('webpage');
var page = webPage.create();

page.open('http://phantomjs.org', function (status) {
  var cookies = page.cookies;

  console.log('Listing cookies:');
  for(var i in cookies) {
    console.log(cookies[i].name + '=' + cookies[i].value);
  }

  phantom.exit();
});

phantomjs 有专门的接口用来添加cookie,就是addCookie:

var webPage = require('webpage');
var page = webPage.create();

phantom.addCookie({
  'name'     : 'Valid-Cookie-Name',   /* required property */
  'value'    : 'Valid-Cookie-Value',  /* required property */
  'path'     : '/foo',                /* required property */
});

当然还可以设置一个cookie其他的属性,具体参见官网。

下面来看一看casperjs的做法:

casperjs

运行casperjs时加上命令行参数:

--cookies-file=./cookies

在casperjs下设置或者获取cookie,从网上的代码看,好像有两条思路:
首先是使用phantom对象,可以通过phantom.addCookie添加cookie,然后通过phantom.cookies来读取。如下两个例子:

设置cookie

一个比较常见的设置cookie的办法:

var cookie
...
if (cookie) {
    cookie.split(";").forEach(function(pair){
        pair = pair.split("=");
        phantom.addCookie({
        'name': pair[0],
        'value': pair[1],
        'domain': getDomain(initUrl),
        });
    });
}
casper.then(function() {
    var cookies = phantom.cookies;
    this.echo("cookie.length = " + cookies.length);
    for (var i in cookies) {
        this.echo(cookies[i].name + "=" +  cookies[i].value);
    }
});

保存cookie到文件

尽管另外保存好像没什么必要,在开启–cookies-file参数后能自动保存:
用这个方法保存的时候,每个cookie的信息是很完整的,每个cookie都包括如下属性:domain,expires,expiry,httponly,name,path,secure,value 这七个属性。和在–cookie-file参数设置的文件内容不一样。

var fs = require('fs') 
var cookies = JSON.stringify(phantom.cookies) 
fs.write("cookie.txt", cookies, 644) 

从文件中读取cookie

var fs = require('fs') 
var data = fs.read("cookie.txt") 
phantom.cookies = JSON.parse(data) 

使用casperjs对象获取cookie:

casper.then(function() {
    var cookies = this.page.cookies;
    this.echo("cookie.length = " + cookies.length);
    for (var i in cookies) {
        this.echo(cookies[i].name + "=" +  cookies[i].value);
    }
});
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值