node 作为客户端模拟用户登录

3,144 阅读1分钟

背景:项目中需要用 node 作为客户端发送请求,但是需要登录认证后才能发送请求。平时,我们都是通过浏览器的 cookie 服务端去判断登录状态,那么如何用 node 模拟用户登录,请求携带 cookie 信息?

解决方法:

1.模拟用户在客户端登录获取 cookie

let request = require('request');
//登陆post地址
let url = '......../login'; // login 请求地址

//登陆的用户名和密码
let user = {
  username: 'xxx',
  password: 'xxx'
};

//设置头部 (模拟浏览器请求)
let headers = {
  'User-Agent': `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36`,
};

let opts = {
  url: url,
  method: 'POST',
  headers: headers,
  form: user,
};

//模拟登陆
request(opts, (e, r, b) => {
  console.log(r.headers['set-cookie']); //这里是登陆后得到的cookie,(重点)
});

2.发送请求携带 cookie 信息

var request = require('request');

let opts = {
  url: 'xxxxx', // 请求 url
  headers: {
    Cookie: 刚刚获取到的 cookie 值,
  }
};

request(opts, function(error, response, body) {})

ok!大功告成~

参考链接