博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
超级课程表API
阅读量:6940 次
发布时间:2019-06-27

本文共 4937 字,大约阅读时间需要 16 分钟。

感觉现在的超级课程表很多功能过于冗余,想写通过它的API来做一个自己用,结果毕业了

版本:4.9.0

平台:安卓

总览

url 备注
BaseUrl
V2/StudentSkip/loginCheckV4.action 登陆
V2/Course/getCourseTableFromServer.action 获取课程表
V2/Course/getCourseTableBySuperId.action 通过他人分享获取课程表,如二维码
V2/SMS/getResetPasswordCaptcha.action 发送修改密码短信
V2/SMS/checkResetPasswordCaptcha.action 验证短信验证码
V2/StudentSkip/resetPasswordByMobileV4.action 修改密码
url 备注
BaseUrl
Score/score/getVerCode.action 获取教务系统验证码
Score/score/importScoreFromSchool.action 查询成绩

登陆

POST V2/StudentSkip/loginCheckV4.action

Body

参数 测试值 解释
platform 1 平台
phoneVersion 19 手机版本 安卓为SDK版本
deviceCode 355757010701395 设备代码(IMEI)
account * ==加密后账号==
versionNumber 9.4.0 超级课程表版本号
password * ==加密后密码==
updateInfo false
channel ppMarket 渠道
phoneBrand samsung 手机制造商
phoneModel SM-G955F 手机型号

备注

账号和密码加密算法:aes([context], md5("friday_syllabus"))

附上JAVA实现代码

import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.security.Key;import java.security.MessageDigest;public class SuperClassUtil {    public static String encrypt(String string) {        String result = null;        try {            result = aes(URLEncoder.encode(string, "utf-8"), md5("friday_syllabus"));        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }        return result;    }    private static String aes(String context, String key) {        String result = "";        Key secretKeySpec;        try {            MessageDigest messageDigest = MessageDigest.getInstance("MD5");            secretKeySpec = new SecretKeySpec(messageDigest.digest(key.getBytes("utf-8")), "AES");            Cipher instance = Cipher.getInstance("AES");            instance.init(Cipher.ENCRYPT_MODE, secretKeySpec);            result = byteToStr(instance.doFinal(context.getBytes("utf-8")));        } catch (Exception e) {            e.printStackTrace();        }        return result;    }    private static String byteToStr(byte[] bArr) {        StringBuilder stringBuilder = new StringBuilder();        for (byte b : bArr) {            String toHexString = Integer.toHexString(b & 255);            if (toHexString.length() == 1) {                toHexString = '0' + toHexString;            }            stringBuilder.append(toHexString.toUpperCase());        }        return stringBuilder.toString();    }    private static String md5(String str) {        int i = 0;        String str2 = null;        char[] cArr = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};        try {            MessageDigest instance = MessageDigest.getInstance("MD5");            instance.update(str.getBytes());            byte[] digest = instance.digest();            char[] cArr2 = new char[32];            int i2 = 0;            while (i < 16) {                byte b = digest[i];                int i3 = i2 + 1;                cArr2[i2] = cArr[(b >>> 4) & 15];                i2 = i3 + 1;                cArr2[i3] = cArr[b & 15];                i++;            }            str2 = new String(cArr2).toUpperCase();        } catch (Exception e) {            e.printStackTrace();        }        return str2;    }}

获取课程表

POST V2/Course/getCourseTableFromServer.action

Header

key value
JSESSIONID 登陆后获取
SERVERID 登陆后获取

Body

参数 测试值 解释
platform 1
phoneVersion 19
term 2 第几学期[1、2]
beginYear 2017 年份
versionNumber 9.4.0
channel ppMarket
phoneBrand samsung
phoneModel SM-G955F

通过他人分享获取课程表,如二维码

POST V2/Course/getCourseTableBySuperId.action

他人分享的二维码中包含了termbeginYearsuperId

Header

key value
JSESSIONID 登陆后获取
SERVERID 登陆后获取

Body

参数 测试值 解释
platform 1
phoneVersion 19
versionNumber 9.4.0
channel ppMarket
phoneBrand samsung
phoneModel SM-G955F
term 2 学期
beginYear 2017 年份
superId 23110790 成绩课程表用户id

发送修改密码短信

POST V2/SMS/getResetPasswordCaptcha.action

Body

参数 测试值 解释
retry 0
platform 1
phoneVersion 19
versionNumber 9.4.0
areaCode null
channel ppMarket
phoneBrand samsung
phoneModel SM-G955F
m * 手机号码
mm * aes(手机号码)

验证短信验证码

POST V2/SMS/checkResetPasswordCaptcha.action

Body

参数 测试值 解释
platform 1
m * 手机号码
phoneVersion 19
captcha 253059 验证码
versionNumber 9.4.0
areaCode null
channel ppMarket
phoneBrand samsung
phoneModel SM-G955F

修改密码

POST V2/StudentSkip/resetPasswordByMobileV4.action

Body

参数 测试值 解释
platform 1
mobileNumber * 手机号码
phoneVersion 19
captcha 253059 验证码
newPassword * 加密后的密码,参考登陆
versionNumber 9.4.0
areaCode null
channel ppMarket
phoneBrand samsung
phoneModel SM-G955F

获取教务系统验证码

GET Score/score/getVerCode.action

query

参数 测试值 解释
identity 6ADF482EEF5A9B5D0CC47C7E864AC3BC 登陆后返回值中获取
schoolIdentity 307CD6AA7D26520033EF2429279E6079 学校ID、登陆后返回值中获取
ts 1527672631 Unix时间戳

获取成绩

POST Score/score/importScoreFromSchool.action

Header

key value
JSESSIONID 获取教务系统验证码Response中获取

Body

参数 测试值 解释
v_c 6ukr 验证码
t_m 2
schoolIdentity 307CD6AA7D26520033EF2429279E6079 学校ID,登陆后获取
s_n * 学校教务系统账号
s_Id 0
p_d * 学校教务系统密码
identity 6ADF482EEF5A9B5D0CC47C7E864AC3BC Id,登陆后获取
b_y 2017 年份

其他

转载地址:http://mksnl.baihongyu.com/

你可能感兴趣的文章
ROCKETMQ——2主2从集群部署
查看>>
从51aspx首页上提取的qq和阿里旺旺在线客服
查看>>
横向纵向菜单制作 Jquery
查看>>
一些做设计挺不错的网站
查看>>
js事件
查看>>
Webpack+Typescript 简易配置
查看>>
docker 中nginx域名解析,反向代理
查看>>
【112】生活新体验
查看>>
用Python3发送邮件详解
查看>>
Android SDK更新以及ADT更新出现问题的解决办法
查看>>
海量数据:判断一棵树是否为另一棵树的子树
查看>>
Android中Application类用法(转)
查看>>
Spring+SpringMVC+MyBatis深入学习及搭建(四)——MyBatis输入映射与输出映射
查看>>
【struts2】struts2中的流接收与流发送
查看>>
eclipse转Android studio遇到的那些坑
查看>>
android开发艺术探索学习 之 结合Activity的生命周期了解Activity的LaunchMode
查看>>
2017-3-2 C#基础 枚举
查看>>
2017-3-8 学生信息展示习题
查看>>
Python多线程(1)
查看>>
Hello World For Unity3D
查看>>