PC版微信扫描登陆原理

1. 二维码背景
 自从微信推广二维码以来,在各个领域二维码的使用越来越广泛,几乎覆盖了各行各业,甚至连一些软件也使用二维码来登陆。那么在二维码登陆的背后是什么原理呢?

2. 解析二维码
 我们要登陆PC版微信,需要扫描的图片如下:
PC版二维码登陆图

 我们通过解析路径发现其指向的路径为https://login.weixin.qq.com/l/obsbQ-Dzag==。那么这个网址有什么用呢?它是怎么来实现和登陆的用户相绑定的功能呢?

3.原理过程分析
 自己懒得再画图,这边借用别人的图来解释。
原理图
<1>用户访问微信网页版,此时微信服务器会为其生成一个全局唯一的UUID。然后这个UUID就存放在上面路径https://login.weixin.qq.com/l/obsbQ-Dzag==的后面,此时该操作并没有和用户有交互,所以该ID仅仅是个唯一字符串而已,系统并不知道该ID会和哪个用户相绑定。
 如果过此时你不断地刷新,你会发现每次的ID都会发生过变化。感兴趣的可以自己手动来抓包,这里就不做示范了。注意:此时服务器和更改你网页还会建立一个长连接,为了节约系统资源,如果一段时间不扫描,便会超时。返回状态为408。

<2>用户扫描PC端的二维码,返回状态码为201,并且生成一个询问,是否登录。这个步骤的目的是为了获取起生成的全局唯一UUID,为了下一步和微信绑在一起。

<3>用户如果此时点击确认登陆,则会像系统发送一条请求,并且将UUID和用户账号(或者token)一块发送过去。

<4>系统受到这一步的目的是将UUIIDI和用户账号(或token)绑定在一起,因为二者都是唯一,便可以确定唯一的对应关系。处理完该关系后,系统会向PC端反馈消息,这个UUID对应的用户是A,然后网页便可请求加载A的微信信息和资料。

4.总结
 二维码扫描看起来好像很高大上,其实原理还是比较简单的。首先浏览器获取一个唯一的、临时的UUID,然后等待用户扫描,如果扫描并且确认,后台系统就会将二者绑定,然后发送也浏览器这个UUID绑定的用户信息。从而确定对应关系。
注意:在超时、网络断开、或者其他设备浏览器上登陆后,,此前绑定的UUID将会失效,这样会形成更有效的安全防护。有些二维码不能扫是因为它会访问钓鱼网站,从而造成财产直接或间接流失。

发布了204 篇原创文章 · 获赞 69 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/pseudonym_/article/details/84311297