如何在NodeJS中维护一个请求会话
我正在尝试使用NodeJS
来抓取需要通过POST
进行login的网站。 然后,一旦我login,我可以通过GET
访问一个单独的网页。
现在的第一个问题是login。我试图使用request
来POST
login信息,但我得到的响应似乎没有login。
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(); }); };
在这里,我只是转发我回来的页面,但我回来的页面仍然显示login表单,如果我尝试访问另一个页面,它说我没有login。
我想我需要维护客户端会话和cookie数据,但我找不到任何资源来帮助我理解如何做到这一点。
作为一个后续,我结束了使用zombiejs来获得我需要的function
您需要制作一个cookiesjar,并为所有相关的请求使用相同的jar子。
var cookieJar = request.jar(); request.post({url : requesturl, jar: cookieJar, form: lform}, ...
理论上这应该允许你以GET方式作为login用户来刮页面,但只有当你得到实际的login代码工作。 根据您对loginPOST的响应描述,这可能实际上并不正确,所以在您首先解决login代码中的问题之前,Cookie jar将无济于事。
request.jar(); 没有为我工作。 所以我使用头部响应来提出另一个请求:
request.post({ url: 'https://exampleurl.com/login', form: {"login":"xxxx", "password":"xxxx"} }, function(error, response, body){ request.get({ url:"https://exampleurl.com/logged", header: response.headers },function(error, response, body){ // The full html of the authenticated page console.log(body); }); });
Actualy这种方式工作正常。 = d