阅读本文大概需要 5 分钟。

相信我们每个人经历过这样的场景:

手机扫码登录 PC 版微信,通过二维码扫描登录,笔记本上的微信就和手机微信同步登录了。这样免去输入繁琐的账号密码,确定方便得很。

对于这样的现象或许有些人都已经司空见惯了,但是有人有没有想过这其中的过程到底发生了什么呢?

其中它是如何实现的呢?这里受到这篇文章的启发

https://blog.csdn.net/zhang_zhenwei/article/details/80847473。

我们来简单研究下。这里以淘宝网站二维码扫描登录为例子。

01

首先,任何一个二维码表示的其实都是一串字符串。我们打开淘宝登录页面

https://login.taobao.com/member/login.jhtml

02

可以通过草料二维码网站解析出这张二维码表示的字符串,解析如下

https://login.m.taobao.com/qrcodeCheck.htm?lgToken=7a5943ff614a68802f415bcf117b1452&tbScanOpenType=Notification

这里面关键的就是 lgToken,这是标识网页的唯一 ID,也可以看做是一个登陆请求链接。

当打开了二维码登录后,我们通过 chrome 控制台,按 F12 查看 network 请求,会发现浏览器网页在轮询调用接口,这里截了张图,我们可以看到浏览器每隔 2 秒调用一次接口(注:这里是之前截的图,所以 lgToken 跟上面的不一样),而且不知道有人注意到没有,有两个不同的 lgToken 在重复

03

访问网页源码,查找到如下 js 代码:

getQRCodeURL: "https://qrlogin.taobao.com/qrcodelogin/generateQRCode4Login.do",

访问此链接,得到如下 json 格式内容:

{"success":true,"message":"null","url":"//img.alicdn.com/tfscom/TB1E4gpIhnaK1RjSZFtwu2C2VXa.png","lgToken":"986c0f36214c1255d94abbb8dc7c6972","adToken":"cfb59d92e2e2900315438a0b70e62573"}

可知,其中 url 是二维码图片地址,lgToken 后面还有一个 adToken,这个 adToken 是干什么的呢?

我们继续查看,网页源代码还有如下的 js 代码:

checkQRCodeURL: "https://qrlogin.taobao.com/qrcodelogin/qrcodeLoginCheck.do",

不难猜到,这个链接是用来检查手机扫码的状态,也就是淘宝页面做了定时检查,当超过一定时间没有扫描,二维码就会过期,如需扫描需要重新刷新页面获取新的二维码。

访问的时候要加上 lgToken,如

https://qrlogin.taobao.com/qrcodelogin/qrcodeLoginCheck.dolgToken=986c0f36214c1255d94abbb8dc7c6972&defaulturl=https%3A%2F%2Fwww.taobao.com%2F

可以得到如下几种结果:

如果没有扫码,浏览器网页等待扫码,返回的是:

{"code":"10000","message":"login start   state","success":true}

如果扫码成功,但是手机上没点击“确认登录”的话,返回的是:

{"code":"10001","message":"mobile scan QRCode success","success":true}

二维码过期, 返回的是:

{"code":"10004","message":"QRCode expired!code=1,msg=data not exist","success":true}

当确认登录,也会返回一个 json ,有点长这里就不贴出了。

04

总结一下:

上面的过程,手机端与服务端做了哪些具体交互我们不得而知,但是可以猜测到,客户端在登录状态有效的情况下,获取了网页端二维码的信息,拿网页端的 lgToken 去请求了服务端,并且服务端记住了这个 lgToken,当网页端不断的用该 lgToken 轮询请求服务端状态时,与手机端的请求匹配一致,就认为是登录了,并且返回了真正的登录态 adToken。

最后以一张流程图总结扫码登录原理:

有什么看法欢迎留言和我讨论~

推荐阅读

关于知识付费的一些思考

ARTS-第-18-期

手机扫描网页二维码登录实现原理分析相关推荐

  1. Unity3D:问题(已解决):如何:实现手机扫描电脑二维码,然后手机上显示此二维码对应的图片

    目录 一.目的 1.想知道:如何:实现手机扫描电脑二维码,然后手机上显示此二维码对应的图片 二.参考 1. 三.注意 四.操作:1:失败:草料二维码官方不提供API.SDK等 1. 四.操作:2:失败 ...

  2. android扫描网页二维码进行网页登录

    转载请标明出处: http://www.cnblogs.com/dingxiansen/: 本文出自:丁先森-博客园 周六和朋友去网吧开黑,开机打开TGP,朋友那边开始输入账号密码,我看了他一眼low ...

  3. 开放平台–扫描微信二维码登录

    准备 如不了解第三方登录流程,建议先大概了解一下,在来看看代码. 说明: 由于开放平台无测试号测试,所以只能上开放平台进行配置信息.公众平台的测试号并不能给开放平台使用. 微信开放平台地址:https ...

  4. 手机扫描条形码二维码原理和实现等网上资料整理

    有志于要从事条形码和二维码开发的同学,和我一样想多了解这方面的东西.但是苦于网上资源甚少,我已经把现有资源整理如下. 原理.实现方案.代码资源.规则是否通用比如加密如何实现? ============ ...

  5. 随机字符串解决大问题之腾讯网如何实现手机扫描二维码登录qq功能的

    随机字符串解决大问题之腾讯网如何实现手机扫描二维码登录qq功能的 腾讯网(www.qq.com)有一个扫码登录功能很有意思, 点击首页一键登录按钮,就会展现一个二维码,用手机qq扫描此二维码就可以使当 ...

  6. 浅谈扫描二维码登录微信网页版与摇一摇传图的实现原理

    前言:简单体验了下微信网页版通过二维码登录和摇一摇传图功能,从技术角度看,网上专家吹捧的 [隔空取物]其实并不神秘,我先简单分析一下. 1. 微信移动端扫描二维码登录(C-S-C模式) CSC模式为: ...

  7. 让你的网站支持手机二维码登录

    如果你的网站能支持二维码登录, 用户打开手机扫描一下, 网页上就立即变为已登录状态了, 是不是很酷? 像腾讯的微信, 手机淘宝等, 都支持用手机扫描二维码登录 Web 版, 极大的方便了用户. 这项技 ...

  8. 二维码登录的实现原理

    登陆流程 手机登录&打开网页二维码登录页(二维码有时效5-10分钟左右,超时会过期)----->扫码之后手机端跳转到一个页面,这个页面至少有两个按钮:确认登录/取消登录-----> ...

  9. 形象理解二维码登录原理

    之前在极客时间看到一个介绍二维码登录的原理,这里写篇文章记录一下.二维码是我们日常生活中随处可见,支付扫码,登录扫码,添加好友扫码,或者查看某些内容也需要扫码.今天分享一下二维码背后的技术和逻辑,并且 ...

最新文章

  1. vb中的webrowser无法进行滑块验证_专题63 验证动量守恒定律
  2. 《强化学习周刊》第40期:PMIC多智能体强化学习、Lazy-MDPs、CTDS
  3. Intelij IDEA管理git之远程代码冲突解决方案
  4. SAP UI5中的同步请求和异步请求
  5. r语言ggplot2 多线图绘制图例_plotnine: Python版的ggplot2作图库
  6. 时富金融:八年左右后内地房价会下降
  7. hypermesh 连接单元_船舶方向测量单元motion sensor
  8. 力扣 每日一题 丢失的数字
  9. Ubuntu离线安装subversion
  10. JSK-23223 数字反转【进制】
  11. 【转】健康,运动,习惯
  12. php postgresql 参数,从postgresql函数参数中检索php数组键和值以进行数据库更新
  13. python中arcpy_如何使用ArcPy?
  14. 最深入的python教程_天啦噜!仅仅5张图,彻底搞懂Python中的深浅拷贝
  15. 设计模式之美总结(结构型篇)
  16. 奔梦向前-代码实现表白男生女生-2020-06-15
  17. 乾坤物联-UWB定位基站和定位信标的区别
  18. android获取后一天日期,android获取本周本月本年的第一天和最后一天
  19. 谷歌浏览器拓展及脚本安装入门简介
  20. 腾讯T3大佬亲自教你!dockercommit打包镜像

热门文章

  1. 获取电脑当前正在连接的wifi密码
  2. Java学习 --- 类方法(静态方法)
  3. 手机测试充电宝软件,记者随机测试5款产品 “有共享充电宝半小时只充了11%”...
  4. 2022-2027年中国共享充电宝市场规模现状及投资规划建议报告
  5. 联想计算机配置在哪里,联想笔记本电脑配置有哪些 买笔记本时如何查看其配置...
  6. 正在做的一款HTML5多人在线扑克牌游戏:99分
  7. Thymeleaf从入门到出家
  8. 机器人煮面机创始人_日本餐厅引进煮面机器人:一小时能煮40碗面的“匠人”?...
  9. 怎么把pdf转换成图片?
  10. 【Java入门】使用Java实现文件夹的遍历