admin管理员组

文章数量:1535457


QQ快速登录实现原理分析之localhost.ptlogin2.qq 怎么会映射到 127.0.0.1问题

  • 前言
  • 一、分析方法
    • 1. 查看域名的DNS解析
  • 二、原理分析
  • 三、知识延伸


前言

最近也在研究QQ快速登录实现原理,在研究过程中也遇到一个问题久久知道其运作原理。在QQ快速安全登录页面中,一个https://localhost.ptlogin2.qq:4301/pt_get_uins接口,远程地址不是QQ的服务器,而是指向的是127.0.0.1访问的本机。可是奇怪的是,这样的域名映射在C:\Windows\system32\drivers\etc\hosts文件中又没有相应的配置项。腾讯是通过什么样的骚操作才能够实现这样的功能呢?下面揭晓答案(个人猜测,如有雷同纯属巧合)


一、分析方法

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
http://114.taobao
http://ecd.tencent
http://wifi.aliyun
http://localhost.sec.qq
http://localhost.ptlogin2.qq

另外,还有一个专门解析到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

本文标签: 原理快速localhostqq