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

标签 javascript node.js cookies

我想使用 nodeJS 作为网站抓取工具。我已经实现了一个脚本,可以让我登录系统并解析页面中的一些数据。

步骤定义如下:

  1. 打开登录页面

  2. 输入登录数据

  3. 提交登录表单

  4. 转到所需的页面

  5. 从页面抓取并解析值

  6. 保存数据到文件

  7. 退出

显然,问题是每次我的脚本都必须登录,我想消除它。我想实现某种 cookie 管理系统,我可以在其中将 cookie 保存到 .txt 文件,然后在下一个请求期间我可以从文件加载 cookie 并将其发送到请求 header 中。

这种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,请在对象创建期间使用以下行:

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

最佳答案

在我的例子中,我使用了像下面这样的“http”库:

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

关于javascript - NodeJS - 如何从服务器响应中获取 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31514395/

相关文章:

python - 我如何使用 Mechanize 接受和发送 cookie?

angularjs - 如何在 Angular 配置中使用 cookiesProvider

javascript - 使用 Jest 测试一个应该抛出错误的函数,但总是收到 "function did not throw"错误

javascript - ReactJs 中的 ApexCharts 条形图垂直类别逻辑?

javascript - 将数字从字符串替换为对象

javascript - 为什么 Node.js 无法处理 Vue.js 的请求?

php - 使用php获取ajax发送的FormData()值

javascript - Ajax启动太晚了...真不方便

javascript - mongodb nodejs - 转换循环结构

javascript - chrome 更改 cookie 路径