Victor's blog

Stay hungry, stay foolish.

0%

远智学堂期末考试之试卷抓包及通过JS脚本实现一键答题

因为参加了远智的学历提升计划,要参加期末考试,我选的这个专业每次还要考十六个科目😢,因为专业不相关,所以也没计划去深入学习。又因为考试时不能打开他们手机端的APP题库,所以很多人都得先在手机上一个题目一个题目的截图,如果是我,得截16科*每科30道题≈480张图,然后还没法搜索…本着节省时间的宗旨,不得出此下策,另外为了方便其他有这方面需求的同学,特别发出这篇blog~

目的

通过APP抓包远智题库,将题库以json文件储存,然后通过JS脚本点击自动选择提选项来实现自动答题。

抓包

电脑端下载并激活Charles抓包工具

  1. 点击下载安装包
  2. 打开Charle - Help - Register Charles,任意输入字符(如Victor);
  3. 点击进入生成激活密钥的网址;
  4. 在网页中输入刚才的字符,点击生成即会生成密钥(如1ea1b0ced9c48f26b2),复制到Charles粘贴进去确认即可;
  5. 在左下角的Fliter输入远智题图API的URLhttps://onlineexam.yzou.cn

IOS端配置代理与HTTPS证书

  1. 在控制台中输入ipconfig查询当前电脑IP,将ip地址以及端口8888在手机上配置为代理:Settings - WLAN - Wifi详情 - Configure Proxy;

  2. 在手机上访问chls.pro/ssl,进入页面会立刻提示此网站尝试下载证书,点击允许即可。如果没有弹出提示下载证书,尝试关闭手机及PC端的代理、如小飞机、Clash、SS等

  3. 下载成功后打开IOS Setting应用,第一项菜单应该就是Profile Downloaded,进去后点击Install然后输入锁屏密码;

  4. IOS 10.3系统及以上,需要在 Settings - General - About - Certificate Trust Settings里面找到Charles Proxy CA({当前日期}, {电脑名称}),打开信任开关即可;

  5. Charles设置Proxy,Proxy -> SSL Proxying Settings…,接着弹框里勾选Enable SSL Proxying,点击Include列表下的Add,host填onlineexam.yzou.cn,Port填443,点击OK即可;

至此在远智APP访问考试相关的HTTPS请求就可以在Charles中看到了

手机端打开试卷

这里非常简单,在远智APP - 学堂 - 智能练题 - 选中要考试的科目 - 整卷练习 - 背题模式,点击查看进去

Charles查看试卷答案

进入试卷界面后在Charles查找getFullPaperInfo.do请求即可。如下图可以看到其中一个单选题的题目、选项及答案:

JSON内容应该是这样:

1
2
3
4
5
6
7
8
9
10
11
{
"code": "00",
"body": {
"referenceTime": 1673101544933,
"paperBaseInfo": {...},//试卷信息
"examHeadlineDetail": [...]//考题信息
},
"msg": "",
"rspTime": 1673101544933,
"ok": true
}

题库准备完成后就可以根据题库的Json文件生成JS脚本然后在浏览器中执行来达到自动选择答案的目的啦😎

生成脚本

老办法,将上面抓到JSON粘贴到输入框,点击升级就会生成JS脚本,然后点击复制,去远智在线的考试界面,按F12打开控制台将脚本粘贴进去回车就好~

1. 将JSON内容粘到输入框


突破考试时间至少要5分钟的限制

其实我本来觉得这个限制应该没法突破的,因为在后台稍微判断一下就可以做到,意想不到的是这个判断逻辑竟然坐在前端😢是我想多了(当然,也可能是同行心存善意🤣🤣)

既如此,打开控制台,在source下的webpack://找到newOnlineExam.vue,在大概1300行处打个断点,页面里点击"交卷"时会命中此断点,然后将rspTime改大一点即可(我是把第一位的1改成2就好了)。

注意事项

由于很多简答题没有答案,并且问题的顺序也不一致,所以对于简答题就需要自行谷歌,或者使用ChatGPT(吹爆!!!)来生成答案😉

郑重声明:使用时请自行核对答案,考0分我可不管啊