转载自 http://taurus-ly.com/articles/2012/02/153.html
也可以看看这篇博客 腾讯的网站如何检测到你的 QQ 已经登录?
在登录QQ邮箱时会自动检测QQ是否已经登录(阿里旺旺也有这个功能了,不过经常不好用),今天突然发觉,这也是个小小的技术点,今天就来探究一下
PS:之前也有人分析过此问题,如:
http://www.cnblogs.com/cxwx/archive/2010/07/01/1768957.html
http://www.iteye.com/problems/77473
最刚开始有几种设想:
1) QQ登录时在本地某地方存登录ID信息(Cookie或文件),用JS读,然后去服务器认证。后来得知现在的浏览器一般有沙箱功能,JS无法读到登录ID;而且在清空Cookie后依然起作用
2) 以IP、CPU ID、硬盘ID为标识,QQ登录时在服务器记录此信息,JS验证。感觉此方法依赖环境过多,QQ不太可能采用此方法
3) QQ启动某端口监听,JS连接此端口。此方法可能性最大,但是用netstat查看后,QQ并没有监听端口
到底用了啥技术呢?经过在g上各种搜,发现使用的是历史很悠久的NPAPI(Netscape Plugin Application Programming Interface)。NPAPI几乎支持所有主流浏览器,包括FF、Chrome、Opera;IE从5.5后停止支持NPAPI,转而使用ActiveX。
QQ的插件名为:NPTXSSO Dynamic Link Library
路径:
C:Program Files (x86)Common FilesTencentTXSSO1.2.1.38binnpSSOAxCtrlForPTLogin.dll
FF(查看方法:附加组件->插件):
Chrome(查看地址:chrome://plugins/):
IE(查看方法:为动态加载项,使用360查看):
详细信息:
一些资料:
http://www.cppblog.com/cdy20/archive/2012/02/09/165232.html
http://lanhy2000.blog.163.com/blog/static/4367860820115183115212/
http://geeklu.com/2010/10/getting-started-with-npapi-plugin/comment-page-1/