江苏青年大学习分析

(编辑:jimmy 日期: 2024/10/30 浏览:2)


江苏QNDXX

自从团关系从学校迁回家,再也不能摆烂不做青年大学习了,因此我想到分析一下青年大学习的一般流程,提高一下完成效率

通过Charles抓包分析

一、关键时间点

观察整个学习流程,分为5个时间点:

  • 打开页面
  • 开始学习
  • 播放完成
  • 课后答题
  • 获得截图

其中,在作答时没有发现post请求,答题结束也没有任何验证,因此课后答题是js判断正误的,完全可以跳过,答案对错不影响完成

1、学习过程由以下4个post请求构成:

江苏青年大学习分析

江苏青年大学习分析

江苏青年大学习分析

江苏青年大学习分析

虽然域名很奇怪,但是api/event的字眼让我感觉到了不凡

其中有一些未知参数需要分析

2、截图由一个get请求完成

江苏青年大学习分析

二、参数分析

1、guid

brilliant.manual.js文件中找到了生成guid的算法:

江苏青年大学习分析

guid由以下函数生成:

function e(t, n) {  var e = new Date,      e = (e.setTime(e.getTime() + 94608e6), "; expires=" + e.toUTCString());  r.cookie = t + "=" + (n || "") + e + "; samesite=strict; path=/"}function i(t) {  t = r.cookie.match(new RegExp("(?:^|; )" + t.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, "\\$1") + "=([^;]*)"));  return t ? decodeURIComponent(t[1]) : null}function a() {  i("b_guid");  var t = {    guid: i("b_guid")  };  return t.guid ? {    guid: decodeURIComponent(t.guid)  } : (t = {    guid: n() + n() + "-" + n() + "-" + n() + "-" + n() + "-" + n() + n() + n()  }, e("b_guid", encodeURIComponent(t.guid)), t);  function n() {    return (65536 * (1 + Math.random()) | 0)      .toString(16)      .substring(1)  }}

实际上就是通过函数n生成65536-131072之间随机整数的16进制并切割出4位,在函数a内拼接

console测试一下:

江苏青年大学习分析

2、tc

timecreate:创建时间

3、tn

timenow:当前时间

4、n

当前模块名

分为4类:

  1. 打开页面
  2. 开始学习
  3. 播放完成
  4. 课后答题

5、u、r

学习页面地址

分析打开大学习界面后的流程

江苏青年大学习分析

通过get获取页面信息,关键cookie:laravel_session

在该页面中,存在关键信息:tokenlession_id

江苏青年大学习分析

随后通过post方法获取真正的页面

江苏青年大学习分析

将地址稍作修改后得到了ur两个地址的值

6、m

学习信息

江苏青年大学习分析

得到初始的m值,随后通过修改得到所有m

7、city

area.js中得到,但混淆过,难以阅读

在打开页面时有“欢迎来自*省*市的团员”选项框,通过观察下拉选项框可以直接得出:

代码城市名1