Created
November 2, 2015 02:20
-
-
Save judasnow/9cbecbf71973bdc9503e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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