Jadual Kandungan
回复讨论(解决方案)
Rumah pembangunan bahagian belakang tutorial php 已给出相应js判断代码,如何用js或者php判断电脑是否登录qq并获得相应qq号

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

Jun 23, 2016 pm 02:28 PM

本帖最后由 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信息,并可以实现快速登录,分析之:

关键的东西:

<script></script>

通过分析这个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 不知道有没类似的功能

初始化Com  

		if (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();
Salin selepas log masuk
Salin selepas log masuk



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)	}}
Salin selepas log masuk
Salin selepas log masuk

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

初始化Com

		if (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();
Salin selepas log masuk
Salin selepas log masuk



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)	}}
Salin selepas log masuk
Salin selepas log masuk



没反应啊,我保存为html,没反应啊,代码如下
<script>		if (window.ActiveXObject) {			q_hummerQtrl = new ActiveXObject(&quot;SSOAxCtrlForPTLogin.SSOForPTLogin2&quot;);			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(&quot;PTALIST&quot;);			var c = T.GetSize();			var X = &quot;&quot;;			var H = $(&quot;list_uin&quot;);			for (var d = 0; d &lt; c; d++) {				var E = T.GetData(d);				var a = E.GetDWord(&quot;dwSSO_Account_dwAccountUin&quot;);				var J = &quot;&quot;;				var O = E.GetByte(&quot;cSSO_Account_cAccountType&quot;);				var b = a;				if (O == 1) {					try {						J = E.GetArray(&quot;SSO_Account_AccountValueList&quot;);						b = J.GetStr(0)					} catch(Z) {}				}				var Q = 0;				try {					Q = E.GetWord(&quot;wSSO_Account_wFaceIndex&quot;)				} catch(Z) {					Q = 0				}				var S = &quot;&quot;;				try {					S = E.GetStr(&quot;strSSO_Account_strNickName&quot;)				} catch(Z) {					S = &quot;&quot;				}				var F = E.GetBuf(&quot;bufGTKey_PTLOGIN&quot;);				var G = E.GetBuf(&quot;bufST_PTLOGIN&quot;);				var N = &quot;&quot;;				var A = G.GetSize();				for (var W = 0; W &lt; A; W++) {					var B = G.GetAt(W).toString(&quot;16&quot;);					if (B.length == 1) {						B = &quot;0&quot; + 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 &lt; 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) == &quot;function&quot;) {					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)	}}</script>
Salin selepas log masuk



腾讯不是有节口吗 没有吧 ,可以在网页上获取用户电脑上登录的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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

11 skrip pemendek URL terbaik PHP (percuma dan premium) 11 skrip pemendek URL terbaik PHP (percuma dan premium) Mar 03, 2025 am 10:49 AM

URL panjang, sering berantakan dengan kata kunci dan parameter penjejakan, boleh menghalang pelawat. Skrip pemendekan URL menawarkan penyelesaian, mewujudkan pautan ringkas yang sesuai untuk media sosial dan platform lain. Skrip ini sangat berharga untuk laman web individu a

Pengenalan kepada API Instagram Pengenalan kepada API Instagram Mar 02, 2025 am 09:32 AM

Berikutan pengambilalihan berprofil tinggi oleh Facebook pada tahun 2012, Instagram mengadopsi dua set API untuk kegunaan pihak ketiga. Ini adalah API Grafik Instagram dan API Paparan Asas Instagram. Sebagai pemaju membina aplikasi yang memerlukan maklumat dari a

Bekerja dengan Data Sesi Flash di Laravel Bekerja dengan Data Sesi Flash di Laravel Mar 12, 2025 pm 05:08 PM

Laravel memudahkan mengendalikan data sesi sementara menggunakan kaedah flash intuitifnya. Ini sesuai untuk memaparkan mesej ringkas, makluman, atau pemberitahuan dalam permohonan anda. Data hanya berterusan untuk permintaan seterusnya secara lalai: $ permintaan-

Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React Mar 04, 2025 am 09:33 AM

Ini adalah bahagian kedua dan terakhir siri untuk membina aplikasi React dengan back-end Laravel. Di bahagian pertama siri ini, kami mencipta API RESTful menggunakan Laravel untuk aplikasi penyenaraian produk asas. Dalam tutorial ini, kita akan menjadi dev

Respons HTTP yang dipermudahkan dalam ujian Laravel Respons HTTP yang dipermudahkan dalam ujian Laravel Mar 12, 2025 pm 05:09 PM

Laravel menyediakan sintaks simulasi respons HTTP ringkas, memudahkan ujian interaksi HTTP. Pendekatan ini dengan ketara mengurangkan redundansi kod semasa membuat simulasi ujian anda lebih intuitif. Pelaksanaan asas menyediakan pelbagai jenis pintasan jenis tindak balas: Gunakan Illuminate \ Support \ Facades \ http; Http :: palsu ([ 'Google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Mar 14, 2025 am 11:42 AM

Pelanjutan URL Pelanggan PHP (CURL) adalah alat yang berkuasa untuk pemaju, membolehkan interaksi lancar dengan pelayan jauh dan API rehat. Dengan memanfaatkan libcurl, perpustakaan pemindahan fail multi-protokol yang dihormati, php curl memudahkan execu yang cekap

12 skrip sembang php terbaik di codecanyon 12 skrip sembang php terbaik di codecanyon Mar 13, 2025 pm 12:08 PM

Adakah anda ingin memberikan penyelesaian segera, segera kepada masalah yang paling mendesak pelanggan anda? Sembang langsung membolehkan anda mempunyai perbualan masa nyata dengan pelanggan dan menyelesaikan masalah mereka dengan serta-merta. Ia membolehkan anda memberikan perkhidmatan yang lebih pantas kepada adat anda

Pengumuman Penyiasatan Situasi PHP 2025 Pengumuman Penyiasatan Situasi PHP 2025 Mar 03, 2025 pm 04:20 PM

Tinjauan Landskap PHP 2025 menyiasat trend pembangunan PHP semasa. Ia meneroka penggunaan rangka kerja, kaedah penempatan, dan cabaran, yang bertujuan memberi gambaran kepada pemaju dan perniagaan. Tinjauan ini menjangkakan pertumbuhan dalam PHP Versio moden

See all articles