node-weibo-simulation-api
Version:
69 lines (67 loc) • 2.09 kB
JavaScript
// 模拟登录微博,并保存cookie备用
;
const request = require('request');
const fs = require('fs');
const querystring = require('querystring');
const encodePostData = require('./encode_post_data.js');
const readline = require('readline');
const {NEED_PIN} = require('../constans/code');
var j = request.jar()
const url = require('url')
class weiboLogin {
constructor(userName, userPwd,onNeedPinCode) {
// 初始化一些登录信息
// 用户名
this.userName = userName;
// 密码
this.userPwd = userPwd;
// 登录的网页地址
this.loginUrl = "https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)";
};
async init() {
return new Promise((resolve,reject)=>{
let usernameBase64 = Buffer.from(this.userName).toString('base64')
let postData = {
"entry": "sso",
"gateway": "1",
"from": "null",
"savestate": "30",
"useticket": "0",
"pagerefer": "",
"vsnf": "1",
"su": usernameBase64,
"service": "sso",
"sp": this.userPwd,
"sr": "1440*900",
"encoding": "UTF-8",
"cdult": "3",
"domain": "sina.com.cn",
"prelt": "0",
"returntype": "TEXT",
};
request.post(this.loginUrl, {
jar: j,
form: postData
}, (err, res, body)=> {
if (err) {
//错误
return reject(err);
}
let result = {};
try {
result = JSON.parse(body);
} catch (e) {
return reject(e);
}
if (res && res.statusCode === 200 && result.retcode == 0) {
//登录成功
let cookie_string = j.getCookieString(this.loginUrl); // "key1=value1; key2=value2; ..."
return resolve(cookie_string);
} else {
return reject(body);
}
});
})
}
}
exports.weiboLogin = weiboLogin;