545 字
3 分钟
校园跑微信小程序登录机制深度解析

校园跑最新研究,本以为能实现免登陆微信,实际上只是我的一厢情愿。

整体的技术原理并不复杂,只需抓包分析客户端与服务器端的网络通信即可。本文重点讲解打开小程序时的登录通信流程

后续的跑步 startend 等接口分析,我已在另一篇博文中详细说明,感兴趣的朋友可以点击此处跳转查看

关键通信流程#

下面这两个环节是理解后续所有通信的基础: 两个请求 我们先点击第一个关键请求,看看这个微信小程序是如何在微信框架下进行登录的:

登录请求抓包截图

从抓包结果可以看到:

请求体 中包含 wxcode响应体 中返回了个人信息及关键的 au(即 token)。

有了这个 au,我们就可以在不实际登录微信的情况下进行校园跑操作。

au 的本质:它就是服务器颁发的令牌,后续所有的身份验证都依赖它,作用相当于账号密码。

注意au 是会过期的。最新测试发现,其有效期限约为 20 小时

小科普:wxCode 是如何来的?#

wxCode(也称为 code)是微信小程序官方提供的临时登录凭证,其生成流程非常标准:

  1. 用户打开目标小程序(成理课外锻炼)。

  2. 小程序内部调用微信官方 API:

  3. 微信服务器收到请求后,生成一个一次性、短效的 code(有效期一般只有 5 分钟)。

  4. 小程序将这个 wxCode 发送给自己的后端服务器(https://clty.cdut.edu.cn/api/user/wx/login)。

  5. 后端使用 wxCode 去微信官方服务器换取 openid、session_key 等信息,进而生成自己的 au 返回给小程序。

核心要点:#

  1. au 与具体微信账号(openid)强绑定。
  2. 服务器通过 wxCode(微信登录凭证)来颁发 au。
  3. 没有目标微信的登录态,就无法拿到该账号对应的有效 au。
  4. au 实质上就是单次登录会话 Token,只是开发者将其命名为 au。