我想使用nodeJS作为网站报废的工具。我已经实现了一个脚本,它将我登录到系统并从页面解析一些数据。
步骤定义如下:
打开登录页面
输入登录数据
提交登录表单
转到所需的页面
从页面中抓取并解析值
将数据保存到文件
退出
显然,问题是每次我的脚本必须登录,我想要消除它。我想实现某种cookie管理系统,我可以将cookie保存到.txt文件,然后在下一个请求中我可以从文件中加载cookie并将其发送到请求头中。
这种cookie管理系统并不难实现,但问题是如何访问nodejs中的cookie?我发现它的唯一方法是使用请求响应对象,您可以使用以下内容:
request.get({headers:requestHeaders,uri: user.getLoginUrl(),followRedirect: true,jar:jar,maxRedirects: 10,},function(err, res, body) {
if(err) {
console.log('GET request failed here is error');
console.log(res);
}
//Get cookies from response
var responseCookies = res.headers['set-cookie'];
var requestCookies='';
for(var i=0; i<responseCookies.length; i++){
var oneCookie = responseCookies[i];
oneCookie = oneCookie.split(';');
requestCookies= requestCookies + oneCookie[0]+';';
}
}
);
现在变量requestCookies
的内容可以保存到.txt文件中,并且可以在下次执行脚本时加载,这样就可以避免每次执行脚本时登录用户的过程。
这是正确的方法,还是有一种方法可以返回cookie?
注意:如果您要将request
对象设置为在每个后续请求中自动重新发送收到的Cookie,请在对象创建期间使用以下行:< / p>
var request = require("request");
request = request.defaults({jar: true});//Send cookies on every subsequent requests
答案 0 :(得分:5)
在我的情况下,我使用了&#39; http:#库,如下所示:
http.get(url, function(response) {
variable = response.headers['set-cookie'];
})
答案 1 :(得分:0)
我个人使用 Axios。
axios.request(options).then(function (response) {
console.log(response.config.headers.Cookie)
}).catch(function (error) {
console.error(error)
});