使用节点请求将Cookie Jar导出为JSON
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用节点请求将Cookie Jar导出为JSON相关的知识,希望对你有一定的参考价值。
request
文档讨论了使用以下示例从文件导入cookie:
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')
})
但是,如评论中所述,它预计cookies.json
已经存在。问题是,如果我有一个带有cookie的exsting jar,我怎么能将它导出到JSON?
答案
我不确定你的意思是“如果我有一个带有cookie的现有jar”,但这里是我如何使用节点js管理持久性cookie。
为了避免FileCookieStore
的错误,我添加了一段代码来创建json文件(如果它不存在)。该文件可以为空,只要它存在:
if(!fs.existsSync(cookiepath)){
fs.closeSync(fs.openSync(cookiepath, 'w'));
}
现在,如果仔细查看FileCookieStore
代码,只要cookie发生变化,您就会看到它调用saveToFile
方法。这意味着通过将FileCookieStore
对象传递给request
模块(使用jar
选项作为the request documentation解释),json文件将始终反映cookie的状态。
这是一个完整的例子:
var FileCookieStore = require('tough-cookie-filestore');
var request = require('request');
var fs = require("fs");
var cookiepath = "cookies.json";
// create the json file if it does not exist
if(!fs.existsSync(cookiepath)){
fs.closeSync(fs.openSync(cookiepath, 'w'));
}
// use the FileCookieStore with the request package
var jar = request.jar(new FileCookieStore(cookiepath));
request = request.defaults({ jar : jar });
// do whatever you want
request('http://www.google.com', function() {
request('http://images.google.com')
});
// the cookies in 'jar' corresponds to the cookies in cookies.json
console.log(jar);
要重新开始,只需删除cookipath
文件即可。
以上是关于使用节点请求将Cookie Jar导出为JSON的主要内容,如果未能解决你的问题,请参考以下文章
Charles:仅将请求正文导出为单独的 JSON 文件 [关闭]