Skip to content

Instantly share code, notes, and snippets.

@judasnow
Created November 2, 2015 02:20
Show Gist options
  • Select an option

  • Save judasnow/9cbecbf71973bdc9503e to your computer and use it in GitHub Desktop.

Select an option

Save judasnow/9cbecbf71973bdc9503e to your computer and use it in GitHub Desktop.
var WebQQWorker = function(qqNumber) {
console.log(`qq: ${qqNumber} worker start`);
this.qq = new QQ(qqNumber);
this.getLoginQrcode();
}
/**
* 从初始页面获取到登录页面的 url 地址
*/
WebQQWorker.getLoginUrl = function(html) {
var loginUrlRegex = /\.src\ =\ "(.+?)"/;
try {
var loginUrl = html.match(loginUrlRegex)[1];
} catch(e) {
console.error(e);
var loginUrl = "";
}
return loginUrl;
};
/**
* 从登录页面获取到 appid, sign, JsVer, MiBaoCss 等信息
*/
WebQQWorker.getInfoFromLoginPageHtml = function(loginPageHtml) {
assert(loginPageHtml);
var info = {};
var appidRegex = /g_appid=encodeURIComponent\(\"(\d+)\"\)/;
var signRegex = /g_login_sig=encodeURIComponent\(\"(.*?)\"\)/;
var jsVerRegex = /g_pt_version=encodeURIComponent\(\"(\d+)\"\)/;
var miBaoCssRegex = /g_mibao_css=encodeURIComponent\(\"(.*?)\"\)/;
try {
var appid = loginPageHtml.match(appidRegex)[1];
var sign = loginPageHtml.match(signRegex)[1];
var jsVer = loginPageHtml.match(jsVerRegex)[1];
var miBaoCss = loginPageHtml.match(miBaoCssRegex)[1];
info = {
appid: appid,
sign: sign,
jsVer: jsVer,
miBaoCss: miBaoCss
}
} catch(e) {
console.dir(e);
info = {};
}
return info;
};
/**
* 生成获取 qrcode 时使用的 url
*/
WebQQWorker.getQrCodeUrl = function(info) {
var appid = info.appid;
assert(appid);
var qrCodeUrl = `https://ssl.ptlogin2.qq.com/ptqrshow?appid={appid}&e=0&l=L&s=8&d=72&v=4`;
return qrCodeUrl;
};
/**
* 访问指定 url 查看用户是否已经成功的扫描 qrcode
* 该方法会被轮询 直到超时或者用户成功扫描
*/
WebQQWorker.checkIsQrlogin = function(info, getQrCodeAt, loginUrl, callback) {
var appid = info.appid;
var miBaoCss = info.miBaoCss;
var jsVer = info.jsVer;
var sign = info.sign;
var timeDelta = (new Date()).getTime() - getQrCodeAt;
var url = `https://ssl.ptlogin2.qq.com/ptqrlogin?webqq_type=10&remember_uin=1&login2qq=1&aid=${appid}&u1=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=0-0-${timeDelta}&mibao_css=${miBaoCss}&t=undefined&g=1&js_type=0&js_ver=${jsVer}&login_sig=${sign}`;
request.get(
{
jar: j,
url: url,
headers: {
"Referer": loginUrl
}
}, function(err, res, body) {
if (err) {
return callback(err);
}
console.log(j.getCookies(url));
});
};
WebQQWorker.prototype.isLogin = function() {
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment