微信网页版可以下载聊天记录吗 微信扫描二维码登录网站是哪个原理,前后两个事件是怎样联系的?

                   

反对

@朱立雄

的答案,从提问可以看得起来他对技术细节并不知道。对前端开发有认识的朋友随意开个Firebug看看登录过程的Net视图基本能够大致看清楚这个过程。

我个人开发过程通常是和产品说,『他们提业务规定、交互模式、性能要求等就好,技术方案我们会综合研发时间、系统架构等原因考量』。

恰好我之前也花过几个小时做过类似的验证登录过程微信网页版可以下载聊天记录,这里成为讨论,把产品同学的提问做个引用,解释一下其中『不技术』的地方。

1.每开启一次微信网页版页面的之后会随机生成一个带有唯一uid的二维码,每次刷新页面都会不一样(这个可以保证一个uid只可以绑定一个帐号和密钥,如果一个uid可以绑定多个帐号和密码微信网页版可以下载聊天记录吗,那么很可能你的手机会登陆别人的微信哦);

确实返回了唯一id,但目的是为了识别用户身份,而且实际上开启这个页面的之后浏览器尚未和Server建立了一个长连接等待确定信息。

查看的源码可以看见,这个页面在加载完毕时,也终于把这些登录后才应该的相关资源都预先加载进来了,所以长连接等待登陆用户受到证实后展示用户信息的速度迅速,因为无需刷页面和加载头像外的其它资源。

2.当用户使用登录后的微信扫描该二维码的之后,会将这个id和电脑上的微信帐号及密码绑定,并上传到微信网页版服务器;

先上个图:

二维码样例:

/x/ARmFYVvUzczwBl9u6Y1I

,利用我看看之类的二维码应用可以受到类似这种的地址,但并不会手动开启该地址,微信用户端对于

/x/

开头的地址做了特殊处理,会自动获得相关信息并提醒确认。在电脑版微信访问这个页面进行确定时,Server已经同时取得了用户端信息,并借助之前保持的长连接告知浏览器。

3.微信网页版页面每隔一秒或2秒会get请求该id对应的微信帐号及卡号,如果id绑定上了微信帐号和密码,那么就可以请求到账号和密码,就可以手动登陆了。

浏览器展示完长连接里包括的用户信息(头像等)后,会新开一个长连接等待用户端的确定操作,其URL类似

/cgi-bin/mmwebwx-bin/login?uuid=794ecedd804f47&tip=1&_=42

。从安全的视角来说,无论怎样都不会让用户端获取微信账号和密码的。要了解,密码这玩意腾讯自己都不敢保存(有兴趣的朋友可以自行了解下CSDN明文密码泄露事件),肯定是不可能返回给浏览器的。

但是从体感来看,怎么着都不可能是页面1-2秒轮询发起GET请求的,实际是借助堵塞等待的长连接,近乎即时的获取信息。对于验证过程,OpenAPI通常是借助授权令牌(Token)来解决的,原理是当用户借助授权后,分配一个限定条件下的令牌(如限制本机访问、限制授权有效时间、限制同时登录设备数等),使赢得授权的客户仅在有限的前提下能访问相关服务。像计算机休眠后曾做的授权就自动收回了,这样就有效的防止了在对方手机上(特别是网吧)开启,但忘记关掉或退出这类安全问题了。

同时,整个授权过程的验证个别在手机端进行,有效防止了PC上泛滥的各种木马、『安全软件』的查询,大大增加了帐号被盗的风险。

然而说,核心过程需要是:浏览器获取一个临时id,通过长连接等待用户端扫描带有此id的二维码后,从长连接中赢得用户端上报给server的账号信息进行展示。并在用户端点击确认后,获得服务器授信的令牌,进行之后的信息交互过程。在超时、网络断开、其他设备上登陆后,此前取得的令牌或损坏、或失效,对授权过程产生有效的安全防护。


本文地址:http://www.tonghuacaxun.com//guanyuwomen/10314.html