我试图用来NodeJS刮擦需要通过登录的网站POST。然后,一旦我登录,便可以通过访问一个单独的网页GET。
NodeJS
POST
GET
第一个问题,现在被登录。我试图使用request到POST的登录信息,但我得到的回应没有出现在被记录。
request
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来获得所需的功能
您需要制作一个饼干罐,并对所有相关请求使用相同的罐。
var cookieJar = request.jar(); request.post({url : requesturl, jar: cookieJar, form: lform}, ...
从理论上讲,这应该允许您以登录用户身份使用GET抓取页面,但前提是您必须使实际的登录代码正常工作。根据您对登录POST的响应的描述,该响应可能实际上尚未正确运行,因此,除非先解决登录代码中的问题,否则cookie罐将无济于事。