.版本 2
.支持库 script
.程序集 WQ_登录协议
.子程序 验证码KEY, 文本型, , 失败返回error
.参数 QQ号, 文本型
.局部变量 网页内容, 文本型
.局部变量 中间数值, 文本型
' http://ptlogin2.qq.com/check?uin=********(QQ号码)&appid=1003903(固定)&r=0.2664082343145449
' 次网页返回的内容格式为:ptui_checkVC('0','!A9H');,其中!A9H为验证码,这种是不需要手动输入的
' ptui_checkVC('1','58c098452da542c3e854d1f09031642ffe8a3024e826f019');
' 上面这种情况是需要输入验证码的
' http://captcha.qq.com/getimage?aid=1003903&r=0.******(16位随机数)&uin=******(QQ号码)&vc_type=*****刚才出现的验证码,也就是58c098452da542c3e854d1f09031642ffe8a3024e826f019
' 可得到一副图片
.计次循环首 (20, )
网页内容 = 到文本 (访问网页 (“http://ptlogin2.qq.com/check?uin=” + QQ号 + “&appid=1003903&r=0.” + 取16位随机数 ()))
中间数值 = 取文本中间 (网页内容, 15, 1)
输出调试文本 (网页内容)
.如果 (中间数值 = “0”)
返回 (取文本之间 (网页内容, “','”, “');”))
.否则
.如果真 (取文本长度 (取文本之间 (网页内容, “','”, “');”)) > 4)
返回 (取文本之间 (网页内容, “','”, “');”))
.如果真结束
.如果结束
.计次循环尾 ()
返回 (“error”)
.子程序 取随机整数, 文本型
.参数 位数, 整数型
.局部变量 结果, 文本型
结果 = “”
.计次循环首 (位数, )
置随机数种子 ()
结果 = 结果 + 到文本 (取随机数 (0, 9))
.计次循环尾 ()
返回 (结果)
.子程序 登录webqq1, , , 这里判断需不需要验证码
.参数 KEY, 文本型, , 局部变量
clientid = 取7或8位随机数 ()
.如果 (取文本长度 (KEY) > 4)
验证KEY = KEY
读取窗.可视 = 假
载入 (验证码窗口, , 真) ' 次帐号需要手动输入验证码
.否则
验证KEY = KEY
登录webqq2 (验证KEY)
.如果结束
.子程序 登录webqq2, , 公开, 登录前期,非正式登录QQ,此处登录成功QQ不会掉线
.参数 验证码, 文本型
.局部变量 登录网页返回文本, 文本型, , , 网页返回的源码
.局部变量 返回cookies, 文本型, , , 网页登录成功会返回一些Cookies,这些Cookies会一直有用,他们表示你登录的标识
读取窗.可视 = 真
_启动窗口.脚本组件.执行 (#md5)
全局密码 = _启动窗口.脚本组件.运行 (“md5_3”, 全局密码)
全局密码 = _启动窗口.脚本组件.运行 (“md5”, 全局密码 + 到大写 (验证码)) ' 使用JavaScript进行QQ密码验证
' 下面进行初步登录,就行我们经QQ空间QQ不会掉线一样,这里登录后QQ不会掉线
登录网页返回文本 = 到文本 (编码转换_ (访问网页 (“http://ptlogin2.qq.com/login?u=” + 全局QQ + “&p=” + 全局密码 + “&verifycode=” + 验证码 + “&webqq_type=10&remember_uin=1&login2qq=1&aid=1003903&u1=http%3A%2F%2Fweb.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert&mibao_css=m_webqq”, , , , 返回cookies, , , , , , ), “UTF-8”, “GBK”, ))
读取窗.可视 = 假
输出调试文本 (登录网页返回文本)
' ptuiCB('0','0','http://web.qq.com/loginproxy.html?login2qq=1&webqq_type=10','0','登录成功!');
' 如果登录成功则返回上面这种文本,还有Cookies
.如果真 (登录错误代码 (登录网页返回文本) ≠ 真)
返回 ()
.如果真结束
读取窗.可视 = 真
' ptwebqq 这个Cookies很重要,整个登录过程都需要他的存在才能进行
' skey 同样也是
ptwebqq = 取文本之后 (返回cookies, “ptwebqq=”)
skey = 取文本之间 (返回cookies, “skey=”, “;”)
输出调试文本 (“PTWEBQQ:” + ptwebqq)
输出调试文本 (“skey:” + skey)
登录webqq3 (_启动窗口.组合框1.现行选中项)
.子程序 登录webqq3, , , 此处为正式登录,成功登录后如果其他客户端在线将被强行顶下线
.参数 状态, , , 这里状态为登录界面上下拉的状态
.局部变量 提交的东西, 文本型, , , 使用Post方式来发送数据,进行登录
.局部变量 网页返回数据, 文本型, , , 登录时返回网页源码
输出调试文本 (“使用Post开始正式登录”)
提交的东西 = “r=%7B%22status%22%3A%22” + 序号到状态 (状态) + “%22%2C%22ptwebqq%22%3A%22” + ptwebqq + “%22%2C%22passwd_sig%22%3A%22%22%2C%22clientid%22%3A%22” + clientid + “%22%2C%22psessionid%22%3Anull%7D&clientid=” + clientid + “&psessionid=null”
网页返回数据 = 到文本 (访问网页 (“http://d.web2.qq.com/channel/login2”, “POST”, 提交的东西))
' 下面两个参数同样也是非常重要的一些参数
vfwebqq = 取特定参数 (网页返回数据, “vfwebqq”)
psessionid = 取特定参数 (网页返回数据, “psessionid”)
输出调试文本 (网页返回数据)
输出调试文本 (“vfwebqq:” + vfwebqq)
登陆成功 = 真
掉线 = 假
.子程序 登录错误代码, 逻辑型, , 失败弹窗返回假,成功返回真
.参数 获取到的完整文本, 文本型
.局部变量 z, 整数型
.局部变量 z1, 文本型
z1 = 取文本之间 (获取到的完整文本, “ptuiCB('”, “'”)
.如果真 (z1 = “”)
信息框 (“未知错误!”, 0, )
返回 (假)
.如果真结束
z = 到整数 (z1)
.判断开始 (z = 0)
返回 (真)
.判断 (z = 1)
信息框 (“系统繁忙,请稍后再试!”, 0, )
.判断 (z = 2)
信息框 (“已经过期的QQ号!”, 0, )
.判断 (z = 3)
信息框 (“密码错误!”, 0, )
.判断 (z = 4)
信息框 (“验证码错误!”, 0, )
.判断 (z = 5)
信息框 (“系统繁忙,请稍后再试!”, 0, )
.判断 (z = 6)
信息框 (“密码错误,如果你刚才修改过密码,请稍后再登录!”, 0, )
.判断 (z = 7)
信息框 (“系统繁忙,请稍后再试!”, 0, )
.判断 (z = 8 或 z = 16)
信息框 (“您的IP错误次数太多,请稍后再试!”, 0, )
.判断 (z = 9 或 z = 10 或 z = 11)
信息框 (“QQ号输入错误!”, 0, )
.判断 (z = 12)
信息框 (“QQ号已过期!”, 0, )
' 懒得打了= =自己打!
.默认
信息框 (“未知错误!”, 0, )
.判断结束
返回 (假)
.子程序 取特定参数, 文本型
.参数 处理文本, 文本型
.参数 欲取参数, 文本型
返回 (取文本之间 (处理文本, #引号 + 欲取参数 + #引号 + “:” + #引号, #引号))
.子程序 取特定参数2, 文本型
.参数 处理文本, 文本型
.参数 欲取参数, 文本型
返回 (取文本之间 (处理文本, #引号 + 欲取参数 + #引号 + “:”, “,”))
转载请注明本文来源于怖客官方网站:http://www.bkhack.com
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。