gpt4 book ai didi

node.js - 使用 Node 请求将 Cookie Jar 导出到 JSON

转载 作者:搜寻专家 更新时间:2023-10-31 22:30:32 27 4
gpt4 key购买 nike

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 的现有 jar,我如何将它导出到 JSON?

最佳答案

我不确定您所说的“如果我有一个包含 cookie 的现有 jar”是什么意思,但这里是我如何使用 nodejs 管理持久性 cookie。

为了避免 FileCookieStore 出错,我添加了一段代码来创建 json 文件(如果它不存在)。该文件可以为空,只要它存在即可:

if(!fs.existsSync(cookiepath)){
fs.closeSync(fs.openSync(cookiepath, 'w'));
}

现在,如果您仔细查看 FileCookieStore 代码,您会发现只要 cookie 发生变化,它就会调用 saveToFile 方法。这意味着通过将 FileCookieStore 对象传递给 request 模块(使用 jar 选项作为 the request documentation 解释),json 文件将始终反射(reflect) 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 文件即可。

关于node.js - 使用 Node 请求将 Cookie Jar 导出到 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35053091/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com