如何使用Node请求包将cookie存储在本地存储中?

时间:2014-09-13 08:27:01

标签: node.js cookies

我想模仿某些网站的签名。当恐慌时我需要重新运行应用程序,并输入验证码。我希望安装主管自动重新运行它并重用我得到的cookie,但我发现请求的Jar不会有一些方法,比如从其他服务器设置cookie。我只能设置我创建的cookie,如文档:

// `npm install --save tough-cookie` before this works
var j = request.jar()
var cookie = request.cookie('your_cookie_here')
j.setCookie(cookie, uri);
request({url: 'http://www.google.com', jar: j}, function () {
  request('http://images.google.com')
})

并获取以下Cookie:

var j = request.jar() 
request({url: 'http://www.google.com', jar: j}, function () {
  var cookie_string = j.getCookieString(uri); // "key1=value1; key2=value2; ..."
  var cookies = j.getCookies(uri); 
  // [{key: 'key1', value: 'value1', domain: "www.google.com", ...}, ...]
})

我如何重用从其他服务器获取的cookie?

1 个答案:

答案 0 :(得分:1)

https://github.com/request/request找到解决方案:

使用自定义Cookie存储(例如 FileCookieStore 它支持从JSON文件保存和恢复),将其作为参数传递 到request.jar()

var FileCookieStore = require('tough-cookie-filestore');
// NOTE - currently the 'cookies.json' file must already exist!
var j = request.jar(new FileCookieStore('cookies.json'));
request = request.defaults({ jar : j })
request('http://www.google.com', function() {
  request('http://images.google.com')
})