前言
最近也在研究QQ快速登录实现原理,在研究过程中也遇到一个问题久久知道其运作原理。在QQ快速安全登录页面中,一个localhost.ptlogin2.qq.com:4301/pt_get_uins…
一、分析方法
1. 查看域名的DNS解析
通过查看Dns命令nslookup可以看出,有一条非权威应答指向的127.0.0.1,如下图所示。
查阅多方资料发现,其实这种映射其实很简单,就是域名解析的时候将子域名映射到127.0.0.1即可(前提你有注册域名),我想腾讯应该也是这样做的,这样处理可以完美解决浏览器跨域问题。
二、原理分析
实际上,本地QQ客户端监听了4300-4308端口,浏览器通过HTTP请求的方式,向本地QQ客户端发送请求,拿到了当前本地QQ客户端登录的账户信息。 浏览器向本地QQ发送请求时,请求中带上了能够令本地QQ确认网站合法性的参数,以防止非法用户获得当前本地QQ客户端的账户信息。
三、知识延伸
其实,这种有时候在本地测试需要用到指向本机的不同域名和IP,互联网上也有很多解析到127.0.0.1的域名,例如:
http://safe.taobao.com
http://114.taobao.com
http://ecd.tencent.com
http://wifi.aliyun.com
http://localhost.sec.qq.com
http://localhost.ptlogin2.qq.com
另外,还有一个专门解析到127.0.0.1的域名:localtest.me,也可以使用子域名。例如:
http://localtest.me
www.localtest.me
http://test.localtest.me
http://a.b.c.localtest.me
http://1234.localtest.me