作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 NodeJS
抓取需要通过 POST
登录的网站。然后,一旦我登录,我就可以通过 GET
访问一个单独的网页。
现在第一个问题是登录。我尝试使用request
来POST
登录信息,但是我得到的响应似乎没有被记录中。
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();
});
};
这里我只是转发我返回的页面,但是我返回的页面仍然显示登录表单,如果我尝试访问另一个页面,它说我没有登录。
我认为我需要维护客户端 session 和 cookie 数据,但我找不到任何资源来帮助我理解如何做到这一点。
作为后续行动,我最终使用了 zombiejs获得我需要的功能
最佳答案
您需要制作一个 cookie jar 并为所有相关请求使用相同的 jar。
var cookieJar = request.jar();
request.post({url : requesturl, jar: cookieJar, form: lform}, ...
从理论上讲,这应该允许您以登录用户身份使用 GET 抓取页面,但只有在您获得实际登录代码后才能进行。根据您对登录 POST 响应的描述,它可能还没有真正正常工作,因此在您首先修复登录代码中的问题之前,cookie jar 将无济于事。
关于javascript - 如何在 NodeJS 中维护请求 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55831345/
我是一名优秀的程序员,十分优秀!