一尘不染

如何在NodeJS中维护请求会话

node.js

我试图用来NodeJS刮擦需要通过登录的网站POST。然后,一旦我登录,便可以通过访问一个单独的网页GET

第一个问题,现在被登录。我试图使用requestPOST的登录信息,但我得到的回应没有出现在被记录。

exports.getstats = function (req, res) {
    request.post({url : requesturl, form: lform}, function(err, response, body) {
        res.writeHeader(200, {"Content-Type": "text/html"});
        res.write(body);
        res.end();
    });
};

在这里,我只是转发我返回的页面,但是返回的页面仍显示登录表单,如果尝试访问另一个页面,则表示我尚未登录。

我认为我需要维护客户端会话和cookie数据,但是找不到任何资源可以帮助我了解如何做到这一点。


作为后续,我最终使用了zombiejs来获得所需的功能


阅读 250

收藏
2020-07-07

共1个答案

一尘不染

您需要制作一个饼干罐,并对所有相关请求使用相同的罐。

 var cookieJar = request.jar();
 request.post({url : requesturl, jar: cookieJar, form: lform}, ...

从理论上讲,这应该允许您以登录用户身份使用GET抓取页面,但前提是您必须使实际的登录代码正常工作。根据您对登录POST的响应的描述,该响应可能实际上尚未正确运行,因此,除非先解决登录代码中的问题,否则cookie罐将无济于事。

2020-07-07