|
发表于 2014-4-25 17:52:52
|
显示全部楼层
北京市北京市

[e]
.版本 2
.支持库 EThread
.支持库 internet
.支持库 spec
.程序集 窗口程序集
.程序集变量 UID, 文本型
.程序集变量 cookie, 文本型
.程序集变量 协议头, 文本型
.程序集变量 skey, 文本型
.程序集变量 wxuin, 文本型
.程序集变量 Sid, 文本型
.程序集变量 DeviceID
.子程序 _按钮_获取二维码_被单击
启动线程 (&获取二维码, , )
.子程序 __启动窗口_创建完毕
启动线程 (&获取二维码, , )
图标 = HTTP读文件 (“https://res.wx.qq.com/zh_CN/htmledition/images/favicon17ced3.ico”)
.子程序 获取UID, 文本型
.局部变量 返回文本, 文本型
UID = “”
返回文本 = 到文本 (网页_访问 (“https://login.weixin.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_=” + 时间_取现行时间戳 ()))
.判断开始 (返回文本 ≠ “”)
返回文本 = 文本_取出中间文本 (返回文本, “uid = ” + #引号, #引号)
.判断开始 (返回文本 ≠ “”)
返回 (返回文本)
.默认
返回 (“”)
.判断结束
.默认
返回 (“”)
.判断结束
.子程序 获取二维码
.局部变量 二维码, 字节集
图片框_登录二维码.禁止 = 真
分组框_二维码.标题 = “二维码获取中...”
UID = 获取UID ()
.判断开始 (UID ≠ “”)
二维码 = 网页_访问 (“https://login.weixin.qq.com/qrcode/” + UID + “?t=webwx”, , , , , , 5)
.判断开始 (二维码 ≠ { })
图片框_登录二维码.图片 = 二维码
分组框_二维码.标题 = “二维码获取成功...√”
.默认
分组框_二维码.标题 = “二维码获取失败...×”
.判断结束
.默认
分组框_二维码.标题 = “二维码获取失败...(UID为空)”
.判断结束
标签_状态.标题 = “请使用微信扫描二维码以登录(点击图片刷新二维码)”
图片框_登录二维码.禁止 = 假
.子程序 _时钟_扫描检测_周期事件
.局部变量 返回文本, 文本型
.局部变量 提交数据, 文本型
.局部变量 URL, 文本型, , , 登陆获取Cookie所用
.局部变量 user, Userinfo
.局部变量 临时数组, 文本型, , "0", 存放初步分割的临时会话列表
.局部变量 临时数组1, Userinfo, , "0", 存放临时会话列表的每一个用户信息
.局部变量 n, 整数型
返回文本 = 到文本 (网页_访问 (“https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?uuid=” + UID + “&tip=1&_=” + 时间_取现行时间戳 ())) ' 检测是否扫描
调试输出 (返回文本 + 文本_取随机汉字 (1))
.如果真 (寻找文本 (返回文本, “code=201”, , 假) ≠ -1) ' 判断用户是否扫描二维码,返回201表示已扫描.然后要提交2个请求包.
提交数据 = 文本_替换 (#扫描后请求包, , , , “2b62551e82eb43”, UID)
' 调试输出 (提交数据)
返回文本 = 到文本 (网页_访问 (“https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxstatreport?type=1&r=” + 时间_取现行时间戳 () + “&skey=”, 1, , , 到字节集 (提交数据)))
返回文本 = 到文本 (网页_访问 (“https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxstatreport?type=1&r=” + 时间_取现行时间戳 () + “&skey=”, 1, , , 到字节集 (提交数据)))
标签_状态.标题 = “√ 成功扫描,请在手机点击确认以登录。”
返回文本 = 到文本 (网页_访问 (“https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?uuid=” + UID + “&tip=0&_=” + 时间_取现行时间戳 ())) ' 检测是否确认
调试输出 (返回文本 + 文本_取随机汉字 (1))
.如果真 (寻找文本 (返回文本, “code=200”, , 假) ≠ -1) ' 判断用户是否在手机确认,返回200表示已经确认.
标签_状态.标题 = “√ 确认成功,请稍等系统正在处理数据。”
URL = 文本_取出中间文本 (返回文本, “uri=” + #引号, #引号)
调试输出 (“URL:” + URL)
.如果真 (URL ≠ “”)
返回文本 = 到文本 (网页_访问 (URL + “&fun=new”, , , , , , , 协议头, , cookie)) ' 获取skey密钥
调试输出 (返回文本)
.如果真 (cookie ≠ “”)
wxuin = 文本_取出中间文本 (cookie, “wxuin=”, “;”)
Sid = 文本_取出中间文本 (cookie, “wxsid=”, “;”)
.如果真 (wxuin ≠ “” 且 Sid ≠ “”)
调试输出 (“wxuin:” + wxuin)
调试输出 (“Sid:” + Sid)
.如果真 (返回文本 ≠ “”)
skey = 文本_取出中间文本 (返回文本, “<skey>”, “</skey>”) ' 取出skey密钥
.如果真 (skey ≠ “”)
提交数据 = 文本_替换 (#扫描后请求包带time参数, , , , “2b62551e82eb43”, UID)
返回文本 = 到文本 (网页_访问 (“https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxstatreport?type=1&r=” + 时间_取现行时间戳 () + “&skey=”, 1, , , 到字节集 (提交数据))) ' 在请求一次POST包
调试输出 (返回文本)
提交数据 = 文本_替换 (#获取最近会话列表, , , , “919397540”, wxuin, “PTUVCfT+H9vwy6rJ”, Sid, “@crypt_ec775a89_4eb78b3a2081182ffd80cde93de3639b”, skey)
返回文本 = 到文本 (网页_访问 (“https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=” + 时间_取现行时间戳 () + “&skey=” + skey, 1, , , 到字节集 (提交数据)))
返回文本 = 编码_utf8到gb2312 (返回文本)
调试输出 (返回文本)
.如果真 (寻找文本 (返回文本, #获取最近会话列表成功, , 假) ≠ -1)
时钟_扫描检测.时钟周期 = 0
返回文本 = 文本_取出中间文本 (返回文本, “ContactList”, “SyncKey”)
临时数组 = 分割文本 (返回文本, “,{”, ) ' 把返回文本中的整体分割成单一的一段用户信息,然后再逐个提取
.如果真 (取数组成员数 (临时数组) > 0)
.计次循环首 (取数组成员数 (临时数组), n)
user.Uin = 文本_取出中间文本 (临时数组 [n], “Uin” + #引号 + “: ”, “,”, )
user.UserName = 文本_取出中间文本 (临时数组 [n], “UserName” + #引号 + “: ” + #引号, #引号, )
user.RemarkName = 文本_取出中间文本 (临时数组 [n], “RemarkName” + #引号 + “: ” + #引号, #引号, )
user.Sex = 文本_取出中间文本 (临时数组 [n], “Sex” + #引号 + “: ”, “,”, )
user.Signature = 文本_取出中间文本 (临时数组 [n], “Signature” + #引号 + “: ” + #引号, #引号, )
user.Province = 文本_取出中间文本 (临时数组 [n], “Province” + #引号 + “: ” + #引号, #引号, )
user.City = 文本_取出中间文本 (临时数组 [n], “City” + #引号 + “: ” + #引号, #引号, )
user.Alias = 文本_取出中间文本 (临时数组 [n], “Alias” + #引号 + “: ” + #引号, #引号, )
调试输出 (user.Uin)
调试输出 (user.UserName)
调试输出 (user.RemarkName)
调试输出 (user.Sex)
调试输出 (user.Signature)
调试输出 (user.Province)
调试输出 (user.City)
调试输出 (user.Alias)
.计次循环尾 ()
.如果真结束
.如果真结束
.如果真结束
.如果真结束
.如果真结束
.如果真结束
.如果真结束
.如果真结束
.如果真结束
.子程序 _图片框_登录二维码_鼠标左键被放开, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
启动线程 (&获取二维码, , )
.子程序 __启动窗口_可否被关闭, 逻辑型
结束 ()
[/e] |
|