NodeJS - 如何从服务器响应中获取cookie

MrD*_*MrD 7 javascript cookies node.js

我想使用nodeJS作为网站报废的工具.我已经实现了一个脚本,它将我登录到系统并从页面解析一些数据.

步骤定义如下:

  1. 打开登录页面

  2. 输入登录数据

  3. 提交登录表单

  4. 转到所需的页面

  5. 从页面中抓取并解析值

  6. 将数据保存到文件

  7. 出口

显然,问题是每次我的脚本必须登录,我想消除它.我想实现某种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]+';';
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

现在变量的内容requestCookies可以保存到.txt文件中,并且可以在下次执行脚本时加载,这样就可以避免每次执行脚本时登录用户的过程.

这是正确的方法,还是有一种方法可以返回cookie?

注意:如果要将request对象设置为在每个后续请求中自动重新发送收到的cookie,请在对象创建期间使用以下行:

var request = require("request");
request = request.defaults({jar: true});//Send cookies on every subsequent requests
Run Code Online (Sandbox Code Playgroud)

小智 5

在我的情况下,我使用了'http'library,如下所示:

http.get(url, function(response) {
    variable = response.headers['set-cookie'];
})
Run Code Online (Sandbox Code Playgroud)