今天在浏览器隐身模式下发现也能使用QQ快速登录功能,即在网页上显示当前QQ客户端已登录的QQ头像,并一键登录。如图:
甚是好奇,遂将其实现方式研究一番。
按F12打开控制台后监视网络流量,注意到一个请求,该请求返回的正是本地登录的QQ账号信息。
返回的内容是JavaScript脚本,其中包含了账户信息:
var var_sso_uin_list=[{
"account":"********(此处为QQ号)",
"client_type":65793,
"face_index":603,
"gender":1,
"nickname":"(此处为昵称)",
"uin":"********(此处为QQ号)",
"uin_flag":125***24
}];
ptui_getuins_CB(var_sso_uin_list);
ping localhost.ptlogin2.qq.com可以看到,该地址指向127.0.0.1,即本机。
结论:
实际上,本地QQ客户端监听了4300端口,浏览器通过HTTP请求的方式,向本地QQ客户端发送请求,拿到了当前本地QQ客户端登录的账户信息。
浏览器向本地QQ发送请求时,请求中带上了能够令本地QQ确认网站合法性的参数,以防止非法用户获得当前本地QQ客户端的账户信息。