在nodejs中使用stringify获取cookie ID

时间:2017-05-24 13:59:22

标签: javascript node.js cookies

我使用以下代码获取特定网站的cookieID:

    var request = require('request');
    var Cookie = require('request-cookies').Cookie;

    request.get('http://dmp.theadex.com/d/753/i/2.gif', function(err, response, body) {
      var rawcookies = response.request.headers['set-cookie'];
      //console.log(response.headers);
      for (var i in rawcookies) {
        var cookie = new Cookie(rawcookies[i]);
        //console.log(cookie.key, cookie.value);
      }
    }).on('redirect', function () {
      let a = this.response.headers['set-cookie'];
      //console.log(_.isArray(a));
      console.log('a = ', a);
      let cookieText = a[0];
      //console.log('cookieText', cookieText);
      let split = cookieText.split("'");
      console.log('split = ', split[0].split(";")[0]);

    });

输出如下: a = ['axd = 1001413541554540210;到期=周四,2008年5月24日,格林威治标准时间13:54:54最大年龄= 31536000;路径= /; domain = .theadex.com'] split = axd = 1001413541554540210

所以代码工作正常,但是从数组中提取cookieID(a)并不是那么高效。有没有人有更好的解决方案来解决这个问题(可能是一个模块或一个方便的功能)? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用set-cookie-parser npm模块。

使用示例中的网址并拦截重定向:

const request = require('request');
const setCookieParser = require('set-cookie-parser'); 

request.get({
  url: 'http://dmp.theadex.com/d/753/i/2.gif',
  followRedirect: false
}, (err, res, body) => {
  if ((res.statusCode >= 300) && (res.statusCode < 400)) {
    const cookies = setCookieParser.parse(res);
    console.log(cookies);
  }
})

返回:

[ { name: 'axd',
    value: '1001413550129520030',
    expires: 2018-05-24T23:29:52.000Z,
    maxAge: 31536000,
    path: '/',
    domain: '.theadex.com' } ]