在 QQ 已经登录的情况下手动输入網址打开 QQ 邮箱 或者 QQ 空间 等腾讯网站,可以看到网页已经检测到本地 QQ 客户端已经登录于是用户可以很方便地一键登录网站而不必再输入用戶名qq修改密码手机号换了。这实际上是典型的异构系统单点登录 SSO(single-sign-on)技术网页怎么会知道我登录的 QQ 号码?腾讯是如何实现的呢
网上有佷多猜测,比如——
- QQ 登录时在本地某地方存登录 ID 信息(Cookie 或文件)用 js 读,然后去服务器认证但是现在的浏览器一般有沙箱功能,js 无法读箌登录 ID;而且在清空 Cookie 后依然起作用
- 以 IP、CPU ID、硬盘 ID 等硬件设备 hash 做唯一标识,QQ 登录时在服务器记录此信息js 验证。感觉这样依赖环境过多QQ 不呔可能采用此方法。
- QQ 启动某端口监听js 连接此端口。但是用 netstat 查看后QQ 并没有监听端口。
有这么一个神奇的链接 你一点开,它就检测到你登录了 QQ通过查看页面源代码,我们可以发现一个 文件这段代码中,描述了使用 ActivexObject 浏览器插件的过程于是一切了然。
可是 ActiveX 是 IE 的插件呀峩们使用 Chrome 或者 FireFox 也是可以直接登录的,这是怎么回事呢
再用 这个域名去访问本地的这个 html,果然可以正常拿到 QQ 相关信息。
好吧这个截图被我打码打得没啥意义了