spi*_*511 2 authentication cookies jar request node.js
我正在抓取一个需要身份验证的网站。我正在使用 node.js 并请求一个 jar 来存储 cookie。
我的问题:我有两条路由 /login 和 /api,当我登录网站时,我将 cookie 存储在登录路由/文件中,然后我如何在 /api 中使用相同的 cookie?
login.js:
var request = require('request');
var jar = request.jar();
var payload = querystring.stringify({
username: username,
password: password,
request_token: token,
});
var options = {
..
..
method: 'POST',
body: payload,
jar: jar <---------- Valid cookie
};
request(options, function (error, response, body) {
// Code here
});
--------------------------------
api.js:
var request = require('request');
var jar = request.jar();
var options = {
method: "get",
url: baseUrl,
jar: jar <-------- Not sat anymore
};
request(options, function (error, response, body) {
if (error) {
res.send(error);
return;
}
Run Code Online (Sandbox Code Playgroud)
您可以创建一个新模块并集中该方法。在这里,我创建了模块jar.js,它导出了允许设置/获取 jar 的函数。
您的原始代码现在只需要考虑这种新方式。在每个文件中,我添加了一行var jar = require('./jar');
jar.js:
var request = require('request');
var jar;
module.exports = function getJar() {
if(jar)
return jar;
else {
jar = request.jar();
return jar;
}
}
module.exports = function setJar(jarParam) {
jar = jarParam;
}
--------------------------------
login.js:
var jar = require('./jar');
var request = require('request');
jar.setJar(request.jar());
var payload = querystring.stringify({
username: username,
password: password,
request_token: token,
});
var options = {
..
..
method: 'POST',
body: payload,
jar: jar.getJar() <---------- Valid cookie, from jar module
};
request(options, function (error, response, body) {
// Code here
});
--------------------------------
api.js:
var request = require('request');
var jar = require('./jar');
var options = {
method: "get",
url: baseUrl,
jar: jar.getJar() <---------- Valid cookie, from jar module
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8876 次 |
| 最近记录: |