微信网页版登陆实现

1. 每打开一次微信网页版页面的时候会随机生成一个含有唯一 uid 的二维码,每次刷新页面都会不一样(这个可以保证一个 uid 只可以绑定一个账号和密码,如果一个 uid 可以绑定多个账号和密码,那么很可能你的电脑会登陆别人的微信哦);

确实返回了唯一 id,但目的是为了识别用户身份,而且实际上打开这个页面的时候浏览器已经和 Server 创建了一个长连接等待确认信息。

查看 http://wx.qq.com 的源码可以轻易看出来,其实这个页面加载完毕的同时,也已经把很多登录后才需要的相关资源都加载进来了,然后会开启一个长连接等待登录用户的信息。

2. 当用户使用登陆后的微信扫描该二维码的时候,会将这个 id 和手机上的微信账号及密码绑定,并上传到微信网页版服务器;

先上个图:

二维码样例: http://weixin.qq.com/x/ARmFYVvUzczwBl9u6Y1I ,利用我查查之类的二维码应用可以轻易得到类似这样的地址,但并不会自动打开该地址,微信实际上针对 http://weixin.qq.com/x/ 开头的地址做了特殊处理,会自动获取相关信息并提示确认。
在手机版微信访问这个页面进行确认时,Server 已经同时获得了客户端信息,并通过之前保持的长连接告知浏览器。

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

浏览器展示完长连接里包含的用户信息(头像等)后,会新开一个长连接等待客户端的确认操作,其 URL 类似 https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?uuid=794ecedd804f47&tip=1&_=1395748413642 。从安全的角度来说,无论如何都不会让客户端获得微信帐号和密码,要知道,密码这玩意腾讯自己都不敢保存(有兴趣的同学可以自行了解下
CSDN 明文密码泄露事件),肯定是不可能返回给浏览器的。

而且从体感来看,怎么着都不可能是页面 1-2 秒 GET 请求的,实际是通过长连接,近乎实时的获得信息。 对于验证过程,Open API 一般是通过授权令牌(Token)来解决的,原理是当用户通过授权后,分配一个限定条件下的令牌(如限制本机访问、限制授权有效时间、限制同时登录设备数等),使获得授权的用户仅在有限的前提下能访问相关服务。 像计算机休眠后曾做的授权就自动收回了,这样就有效的避免了在别人电脑上(尤其是网吧)打开,但忘记关闭或退出这类安全问题了。

同时,整个授权过程的验证部分在手机端进行,有效杜绝了 PC 上泛滥的各类木马、『安全工具』的监听,大大降低了帐号被盗的风险。

整个核心过程是:浏览器获得一个临时 id,通过长连接等待客户端扫描带有此 id 的二维码后,从长连接中获得客户端上报给 server 的帐号信息进行展示,并在客户端点击确认后,获得服务器授信的令牌,进行随后的信息交互过程。 在超时、网络断开、其他设备上登录后,此前获得的令牌或丢失、或失效,有效完成了安全防护。

时间: 2024-10-22 13:43:18

微信网页版登陆实现的相关文章

微信网页版朋友圈在哪?怎么找不到

之前ytkah有介绍了微信网页版,确实方便了很多,直接浏览器就可以操作,不用安装其他程序.用过的朋友都在问微信网页版朋友圈在哪?现在我们一起来找找吧 如下图所示,左侧:第一行的右上角是菜单,分别是发起聊天.关闭桌面通知.关闭声音.意见反馈.退出:第二行是搜索框,可以搜索微信好友.公众号.聊天记录:第三行是微信聊天列表.公众号列表.通讯录列表:右侧:聊天窗口.公众号文章显示.通讯录显示 比较遗憾,微信网页版朋友圈这个功能确实找不到,也许微信团队原本就没打算把它加进去,本着极简的原则,让你提高效率,

HTML阻止iframe跳转页面并使用iframe在页面内嵌微信网页版

昨天看到这篇文章[置顶]开源组件NanUI一周年 - 使用HTML/CSS/JS来构建.Net Winform应用程序界面 就想弄一个winform结合html5的一个小东西,突有兴致,想在里面嵌套一个微信网页版. 好了,想法一出来,就行动吧,最终效果如下图: 一开始就打算在页面里面嵌套一个iframe指向https://wx.qq.com就OK了,但是我还是太天真,微信网页版会自动跳转.结果如下图: 于是上网搜了一下阻止iframe跳转的办法,就是在iframe标签加上 security="r

为什么微信网页版收不到表情?

微信现在已经推出了PC版,在PC版之前一直都是网页版,使用过网页版微信的朋友如果细心的话一定会发现,网页版收不到表情,这是为什么呢? 启安做了一个大胆的猜测: 微信的表情都是受版权保护的,为了避免被提取出来流传出去,因此必定加了一些版权保护机制.我们知道网上大多数动态表情都是gif格式的,微信为了实现动态表情又要考虑到版权保护,一般会有两个做法,一种就是将gif加密,展示的时候进行解密:另一种就是设计一种微信自己可以解析的新文件格式,配套一个解析展现引擎,当然也不难.然而网页版微信利用了web技

微信开发微信网页授权登陆不成功的问题

最近一直在研究围绕微信平台的相关开发,其中踩到了不少坑,特来此记录一番,也方便交流.真想吐槽为什么微信弄个开放平台还要加一个公众平台呢?两边文档还不一样.类似的功能还得写两次.上网查了下,果然有人在喷微信文档多次误导第三方sdk写错了:) 上次接到一个任务,PC网站要支持微信第三方登陆功能.一直以为是在服务号那边做相应的配置和处理,看的是这边的文档 .尝试了多次都是提示scope没有相关权限,授权地址格式如下: [javascript] https://open.weixin.qq.com/co

微信网页授权登陆的一次查错误经历

最近一直在研究围绕微信平台的相关开发,其中踩到了不少坑,特来此记录一番,也方便交流.真想吐槽为什么微信弄个开放平台还要加一个公众平台呢?两边文档还不一样.类似的功能还得写两次.上网查了下,果然有人在喷微信文档多次误导第三方sdk写错了:) 上次接到一个任务,PC网站要支持微信第三方登陆功能.一直以为是在服务号那边做相应的配置和处理,看的是这边的文档 .尝试了多次都是提示scope没有相关权限,授权地址格式如下: https://open.weixin.qq.com/connect/oauth2/

微信网页第三方登陆 代码

1.登陆的html页面代码 <a href="weixin.redirect_uri">微信登陆</a> 2.跳转到的控制器方法代码 CJUL是常量,就是你在开放平台上注册的重定向网址 跳换到后重定向到的地址是微信的一个重定向地址 https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&sco

vue仿微信网页版|vue+web端聊天室|仿微信客户端vue版

一.项目介绍 基于Vue2.5.6+Vuex+vue-cli+vue-router+vue-gemini-scrollbar+swiper+elementUI等技术混合架构开发的仿微信web端聊天室——vueWebChat,实现了发送消息.表情(动图),图片.视频预览,右键菜单.截屏.截图可直接粘贴至文本框进行发送. 二.技术框架 MVVM框架:Vue2.5.6 状态管理:Vuex 页面路由:Vue-router iconfont图标:阿里巴巴字体图标库 自定义滚动条:vue-gemini-sc

JS / jquery 实现页面 面板拖动 QQ网页版登陆页面拖动

参考:慕课网DOM实践探秘 http://www.imooc.com/learn/138 实现需求:点击页面头部,可以拖动面板.使用js原生和jquery 各实现一次. 可以学到:1.鼠标在当前页面的位置. 2.事件处理程序,阻止冒泡, 3.面板位置的逻辑计算. 4.鼠标事件:onmousedown (鼠标点下)  onmouseup  (鼠标释放) onmousemove (鼠标移动) 课前须知:html css javascript jquery 实例:

微信公众号开发简单的网页授权登陆获取用户基本信息

由于业务需要,近期在做微信公众号开发,其中一个模块是微信用户点击个人中心访问可以得到次微信用户的头像昵称国家省份等基本信息. 但由于业务需求,这块功能暂时用不上了,但这功能的实现毕竟是自己花费几天时间搞出来的,觉得以后会用的上,暂且记录一下实现过程. 首先:获取用户信息的过程属于微信网页授权登陆,再做这一块之前请先阅读微信开发文档以熟悉基本的开发过程: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 微信开发文档