本帖最后由 dz215136304 于 2013-09-29 10:55:56 编辑 类似于qq邮箱的快速登录,下面是网上转载的,现在想用js或者php实现(这个是可以实现的,已经见别人做过了,用js实现的)

有时候做程序,喜欢把程序的注册与用户QQ号码绑定,程序仅允许登录成功了指定QQ账号时才可使用,

为了实现这个目的,有人用API取QQ窗口、QQ托盘图标上的QQ账号,

但是这个方法写起来比较麻烦,如果用户有意玩玩的话,也可以自己在你软件获取之前先用API修改你要获取的目标信息!

还有一种方法就是内存读取,当然要找到一个QQ登录成功后存放QQ号码的地址,基址肯定是不存在的,再加之QQ更新频繁,

所以内存读取的办法也不太好,

为了实现这个目的,还有一种办法那就是利用QQ网页自身的功能,这种方法既方便又准确,下面就来说下原理:

打开: http://xui.ptlogin2.qq.com/cgi-bin/qlogin

我们会发现这也页面会自动获取我们的已登录的QQ信息,并可以实现快速登录,分析之:

关键的东西:

通过分析这个js,我们找到如下2个重要的函数:

function ptui_qInit() 这个函数的作用是初始化SSOAxCtrlForPTLogin.SSOForPTLogin2对象,创建一个ActiveXObject对象

hummer_loaduin() 这个函数就是真正的通过 SSOAxCtrlForPTLogin这个COM来获取已登录QQ信息的,

到此,我们试着自己用程序来调用 SSOAxCtrlForPTLogin的com对象,但是发现失败,原因下面说,

既然不能自己调用 SSOAxCtrlForPTLogin对象,那先试试将页面保存为本地在打开看看什么情况,结果如下:

“快速登录失败,请您返回重试或切换到普通登录模式。”

很明显, SSOAxCtrlForPTLogin对象是要判断当前url的,如果url不是来自以下域名的都不能初始化成功:

var site=["qq.com","paipai.com","tencent.com","soso.com","taotao.com","tenpay.com","foxmail.com","wenwen.com","3366.com","imqq.com"];

好了,既然不能自己用本地页面,也不能自己写程序调用它的COM,那我们就直接来访问它获取它页面上已经获取好的信息吧:

同时附上已经格式好了的 xui.js代码,

net.txt文件时用C#实现的,现在想用js或者php实现,可以参考下C#的代码

代码下载地址:http://pan.baidu.com/s/144rug

回复讨论(解决方案)

直接利用 oauth 应该就好了吧

腾讯不是有节口吗

腾讯不是有节口吗 没有吧 ,可以在网页上获取用户电脑上登录的qq号

腾讯不是有节口吗 没有吧 ,可以在网页上获取用户电脑上登录的qq号

获取浏览者是否登录QQ,登录QQ的号码,必须得用腾讯的那个接口。

官网可以申请到的, http://wiki.opensns.qq.com/wiki/%E3%80%90QQ%E7%99%BB%E5%BD%95%E3%80%91OpenAPI%E6%9D%83%E9%99%90%E7%94%B3%E8%AF%B7

如果仅仅是获取自己电脑登录的QQ号码,很容易的。

c# 是用WebBrowser 等网页加载完成后读取的 。。 PHP 不知道有没类似的功能

初始化Comif (window.ActiveXObject) {q_hummerQtrl = new ActiveXObject("SSOAxCtrlForPTLogin.SSOForPTLogin2");var A = q_hummerQtrl.CreateTXSSOData();q_hummerQtrl.InitSSOFPTCtrl(0, A);g_vOptData = q_hummerQtrl.CreateTXSSOData()} else {}hummer_loaduin();

function hummer_loaduin() {q_aUinList.length = 0;if (window.ActiveXObject) {var Y = q_hummerQtrl.DoOperation(1, g_vOptData);if (null == Y) {return}try {var T = Y.GetArray("PTALIST");var c = T.GetSize();var X = "";var H = $("list_uin");for (var d = 0; d < c; d++) {var E = T.GetData(d);var a = E.GetDWord("dwSSO_Account_dwAccountUin");var J = "";var O = E.GetByte("cSSO_Account_cAccountType");var b = a;if (O == 1) {try {J = E.GetArray("SSO_Account_AccountValueList");b = J.GetStr(0)} catch(Z) {}}var Q = 0;try {Q = E.GetWord("wSSO_Account_wFaceIndex")} catch(Z) {Q = 0}var S = "";try {S = E.GetStr("strSSO_Account_strNickName")} catch(Z) {S = ""}var F = E.GetBuf("bufGTKey_PTLOGIN");var G = E.GetBuf("bufST_PTLOGIN");var N = "";var A = G.GetSize();for (var W = 0; W < A; W++) {var B = G.GetAt(W).toString("16");if (B.length == 1) {B = "0" + B}N += B}var M = {uin: a,name: b,type: O,face: Q,nick: S,key: N};q_aUinList[d] = M}} catch(Z) {}} else {try {var M = pt.sso;var L = M.InitPVA();if (L != false) {var I = M.GetPVACount();for (var W = 0; W < I; W++) {var C = M.GetUin(W);var D = M.GetAccountName(W);var K = M.GetFaceIndex(W);var U = M.GetNickname(W);var P = M.GetGender(W);var V = M.GetUinFlag(W);var f = M.GetGTKey(W);var R = M.GetST(W);q_aUinList[W] = {uin: C,name: D,type: 0,face: K,nick: U,key: R}}if (typeof(M.GetKeyIndex) == "function") {pt.keyindex = M.GetKeyIndex()}}} catch(Z) {}}switch (q_aUinList.length) {case 0:ptui_reportAttr(77430, 0.05);break;case 1:ptui_reportAttr(77431, 0.05);break;default:ptui_reportAttr(77432, 0.05)}}

好像js跑对象可以 调试的时候看到了QQ号 和昵称了 数量也对

初始化Comif (window.ActiveXObject) {q_hummerQtrl = new ActiveXObject("SSOAxCtrlForPTLogin.SSOForPTLogin2");var A = q_hummerQtrl.CreateTXSSOData();q_hummerQtrl.InitSSOFPTCtrl(0, A);g_vOptData = q_hummerQtrl.CreateTXSSOData()} else {}hummer_loaduin();

function hummer_loaduin() {q_aUinList.length = 0;if (window.ActiveXObject) {var Y = q_hummerQtrl.DoOperation(1, g_vOptData);if (null == Y) {return}try {var T = Y.GetArray("PTALIST");var c = T.GetSize();var X = "";var H = $("list_uin");for (var d = 0; d < c; d++) {var E = T.GetData(d);var a = E.GetDWord("dwSSO_Account_dwAccountUin");var J = "";var O = E.GetByte("cSSO_Account_cAccountType");var b = a;if (O == 1) {try {J = E.GetArray("SSO_Account_AccountValueList");b = J.GetStr(0)} catch(Z) {}}var Q = 0;try {Q = E.GetWord("wSSO_Account_wFaceIndex")} catch(Z) {Q = 0}var S = "";try {S = E.GetStr("strSSO_Account_strNickName")} catch(Z) {S = ""}var F = E.GetBuf("bufGTKey_PTLOGIN");var G = E.GetBuf("bufST_PTLOGIN");var N = "";var A = G.GetSize();for (var W = 0; W < A; W++) {var B = G.GetAt(W).toString("16");if (B.length == 1) {B = "0" + B}N += B}var M = {uin: a,name: b,type: O,face: Q,nick: S,key: N};q_aUinList[d] = M}} catch(Z) {}} else {try {var M = pt.sso;var L = M.InitPVA();if (L != false) {var I = M.GetPVACount();for (var W = 0; W < I; W++) {var C = M.GetUin(W);var D = M.GetAccountName(W);var K = M.GetFaceIndex(W);var U = M.GetNickname(W);var P = M.GetGender(W);var V = M.GetUinFlag(W);var f = M.GetGTKey(W);var R = M.GetST(W);q_aUinList[W] = {uin: C,name: D,type: 0,face: K,nick: U,key: R}}if (typeof(M.GetKeyIndex) == "function") {pt.keyindex = M.GetKeyIndex()}}} catch(Z) {}}switch (q_aUinList.length) {case 0:ptui_reportAttr(77430, 0.05);break;case 1:ptui_reportAttr(77431, 0.05);break;default:ptui_reportAttr(77432, 0.05)}}

没反应啊,我保存为html,没反应啊,代码如下

腾讯不是有节口吗 没有吧 ,可以在网页上获取用户电脑上登录的qq号

获取浏览者是否登录QQ,登录QQ的号码,必须得用腾讯的那个接口。

官网可以申请到的, http://wiki.opensns.qq.com/wiki/%E3%80%90QQ%E7%99%BB%E5%BD%95%E3%80%91OpenAPI%E6%9D%83%E9%99%90%E7%94%B3%E8%AF%B7

如果仅仅是获取自己电脑登录的QQ号码,很容易的。

我不是获取登录的,我的需求是 只要用户打开网页,就能检测到用户电脑上已经登录的qq(注意是用户电脑上登录的qq),这个绝对可以实现的,我见过有人搞过

dom获取把 好像只有从网页抓了 他的com有验证 js里一堆堆的异常 昨天调了好久 擦 可能还有其他办法 不过 我没啥好办法了 获取网页上的把 这样还简单点

我不是获取登录的,我的需求是 只要用户打开网页,就能检测到用户电脑上已经登录的qq(注意是用户电脑上登录的qq),这个绝对可以实现的,我见过有人搞过

QQ自动同步登录,那个绝对得向QQ官方申请授权的。否则别想了。

已经私信你了

已经私信你了

怎么弄的?

已经私信你了

怎么弄的?

同问?

大牛 怎么弄的

已经私信你了 您好,请问这个是怎么实现的?我也想要这样的一个功能,求帮助!! 谢谢您了!!

我已经关注您了,请您也关注一下我,发我一个吧!!谢谢了!!

发我一个吧!谢谢

大哥们,谁有思路给小弟说下吧!小弟在这里拜谢了

已经私信你了

怎么弄的?

同求

已经私信你了

怎么弄的?

这个问题解决没呢。。已关注你~!

亲 你的demo不能下载呀...能给我一份吗? 1101350716@qq.com 我再研究一下

楼主 我也要 急需 dawnvi@dawnvi.com 谢谢

这问题头痛一天了,盼望能提到楼主指点。

具体咋搞 详细点

万吨铜球,高手

万吨铜球,高手 swing_li@sina.com

楼主吉祥 同求 397109515@qq.com

这要是能用就怪了。

兄弟 ,你这个提取的做出来没有,我有方案,2 0 6 4 7 5 5 3 6 5

大哥,好像不能用啊,如何输出一下看看效果呢?

同求:603434790@qq.com

已实现,还可以获取手机号码的,后台给用户开户后可以设置有效期,获取到访客qq后可以给用户实时发送邮件给管理员,还可一键推送邮件给客户,QQ的昵称、位置、性别这些都可以获取。需要系统联系我吧,便宜卖给你 QQ :2064755365

咋搞呢

同求一份。楼主154519725@qq.com

有这样的功能吗,同求啊1003014877@qq.com

已经私信你了 同求 313653576@qq.com

已经私信你了

同求一个啊 …… 416984751@qq.com

同求啊 hhhhhhhh

已经私信你了 同求一个啊 …… 366609189@qq.com

已经私信你了

也发一个给我好吗? 250154026@qq.com 非常感谢

已经私信你了

能否也发我一份,学习学习~

发我一份,学习一下下:邮箱:guolongli945@qq.com

遇到同样的需求,楼主能发个解决方法给我?邮箱605986169@qq.com,谢谢

我也遇到相同的问题,能否发个给我呢,谢谢了979081767@qq.com

求高手解惑!!我也需要一份!!727188903@qq.com

同求 lbxbj2008@163.com

求高手指导,给我一份代码,邮箱1021215894@qq.com

php判断是不是QQ号,已给出相应js判断代码,如何用js或者php判断电脑是否登录qq并获得相应qq号...相关推荐

  1. html禁止qq管家弹出广告,教你两招系统自带永久关闭电脑弹窗广告、流氓软件

    一.方法1 许多小伙伴在使用电脑时都有遇到桌面老是弹出一些烦人的广告吧,特别是什么今日热点.今日新闻之类的.虽然电脑管家.360之类的管家软件通常都有屏蔽的功能,但毕竟需要运行着这些软件,占用系统资源 ...

  2. 电脑qq怎样与手机微信连接到服务器,如何在电脑中登录多个微信和QQ?三种方法...

    出于各种需要,很多人会申请注册几个微信号或者QQ号,那么问题来了,如果想要实现微信多开.QQ多开,应该采取什么方法呢?今天小编就来支招,给大家介绍在电脑中多开微信和QQ的方法,请参考. 电脑端如何实现 ...

  3. qq公众平台出错了609_微信公众号粉丝去哪买?有哪些购买渠道?

    微信公众号的粉丝是可以购买的,如果你申请了微信公众号,想要以营利为主的话,需要去不断的增加公众号粉丝的数量才行,这些粉丝现在是可以去购买到的,微信公众号粉丝去哪买呢? 1.可以找专业的平台去购买微信公 ...

  4. dnf服务器延迟怎么看,dnf如何判断自己网络还是服务器出问题_dnf判断自己网络还是服务器出问题详细介绍_游戏堡...

    dnf如何判断自己网络还是服务器出问题,玩DNF真是好,玩得我的电脑水平都直线上升了....经常看到喇叭或者打团的时候有人抱怨服务器卡,但每次都是服务器的锅吗?下面就和小编一起来看看如何判断自己网络还 ...

  5. 如何阻止QQ右下角弹出新闻框

    如何阻止QQ右下角弹出新闻框 http://hi.baidu.com/liarbin/item/055858d94a674ff8ca0c3947 一.去除腾讯迷你首页: 方法一.最简单.彻底的方法(即 ...

  6. 已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。

    已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者. 答案: int max(int a,int b) { return (a+b+abs(a-b))/2; } ...

  7. 给定入栈序列,判断一个串是否为出栈序列

    剑指offer22:给定入栈序列,判断一个串是否为出栈序列 public static boolean isOutStackSequence(int[] Spush, int[] Spop) {if ...

  8. 类QQ右下角弹出框(Qt)

    2019独角兽企业重金招聘Python工程师标准>>> 使用Qt写的类QQ右下角弹出框 /***main.cpp */ #include <QtGui/QApplication ...

  9. 判断IE版本并给出提示升级浏览器

      <html>   <head>   <title>判断IE版本并给出提示升级浏览器</title>   <meta http-equiv=&q ...

最新文章

  1. PostgreSQL 9.3 beta2 stream replication primary standby switchover bug?
  2. 工业4.0进行时:未来协作方式的变革
  3. 万全服务器t350装系统_计算机中那些事儿(八):再历装系统之终身学习
  4. DeepLearning:CNN网络学习之LetNet-5解读(论文+分析+代码)
  5. linux版_巧用linux版powershell,管理linux下的docker
  6. reactjs三个常用的Hook:State Hook、 Effect Hook、 Ref Hook
  7. WinForm部署问题
  8. docker certbot 一键申请https证书、证书过期续订、续订成功自动重启服务
  9. JavaScript 深入理解作用域
  10. 外壳程序(shell):命令解释器commond
  11. Python之路-(列表、元组、字典、集合、字符串)
  12. php dw文件上传下载,PHP-文件上传
  13. treemap倒叙_lua 模拟Treemap 排序
  14. 《斗罗大陆H5》月刃武魂指导和魂环搭配
  15. 麦澜德医疗科创板上市:年营收3.4亿市值44亿 深耕盆底康复
  16. 信贷十条打响新一轮经济刺激第一枪
  17. Mermaid流程图
  18. php输入中文就乱码,在php图片中输入中文文字解决乱码
  19. IIS设置HTTP 响应标头控制文件下载
  20. 查看和修改电脑的ip地址

热门文章

  1. c语言开发运动控制系统,独立式运动控制器的可编程实现技术
  2. 九龙证券|重要信号!下周,没有这类新股申购
  3. 快播大屏幕作为快播的第一款硬件产品
  4. 菜鸟学习OGRE和天龙八部之二: 天龙八部AXP数据格式搞定
  5. pycharm安装教程(下载安装+设置中文界面)
  6. UE4-材质法线强度调整、法线贴图混合、自定义材质函数、材质边缘过渡、植被动态效果
  7. mysql创建用户变量_MySQL创建一个变量的用户?
  8. 【大学生数学竞赛】2019年第十一届全国大学生数学竞赛初赛非数学专业试题解答
  9. android 软启动功能,软启动原理
  10. Day 28 函数式接口