Jaccount 登陆&选课协议分析 V2
注:参数中所有中文实际传输均需要UrlEncode
地址:https://jaccount.sjtu.edu.cn/jaccount/jalogin?sid=xxx&client=xxx&returl=xxx&se=xxx
参数:
sid
:验证参数,接入ID号?client
:验证参数,客户端?returl
:登陆后的返回地址,CSRF防护se
:验证参数,SK?
返回:
- 登录界面
地址:https://jaccount.sjtu.edu.cn/jaccount/captcha?uuid=xxx&t=xxx
参数:
uuid
:随机uuidt
:时间戳
返回:
- 验证码图片(每次访问会刷新!)
地址:https://jaccount.sjtu.edu.cn/jaccount/ulogin
参数:
sid
:登录界面中的sid
returl
:登录界面中的returl
se
:登录界面中的se
user
:登陆用户名pass
:密码captcha
:验证码v
:空client
:登录界面中的client
uuid
:验证码uuid,不可省略g-recaptcha-response
:reCaptcha参数,可省略
返回:
- 用户名/密码/验证码错误302登录界面且出现错误提示
- 验证成功设置
JAVisitedSites
和JAAuthCookie
,然后302回到先前指定地址完成认证 - Cookie有效期为会话级
- V2版选课系统很不错,不像V1版的反人类,可以直接向系统提交选课了,且容错性挺强,妈妈再也不用担心我一步一步模拟人类操作啦~
地址:https://i.sjtu.edu.cn/jaccountlogin
返回:302重定向
- 多次302跳转到Jaccount认证
地址:https://i.sjtu.edu.cn/xtgl/index_initMenu.html?jsdm=&_t=xxx
参数:
jsdm
:未知参数,不加似乎无影响_t
:应该是时间戳,不加似乎无影响
返回:登陆后主界面
- 需要包含登陆cookie
V2版采用AJAX无刷新技术,比之前不知道高到哪里去了,因此除了汉语拼音命名让人不知所云外分析较为方便。
- 主界面:
https://i.sjtu.edu.cn/xsxk/zzxkyzb_cxZzxkYzbIndex.html?gnmkdm=N253512&layout=default&su=xxx
- 课程显示:
https://i.sjtu.edu.cn/xsxk/zzxkyzb_cxZzxkYzbDisplay.html?gnmkdm=N253512&su=xxx
- 已选信息:
https://i.sjtu.edu.cn/xsxk/zzxkyzb_cxZzxkYzbChoosed.html?gnmkdm=N253512&su=xxx
GET参数:
gnmkdm
:菜单栏选项,N253512
即为选课。su
:学号
地址:https://i.sjtu.edu.cn/xsxk/zzxkyzb_cxZzxkYzbPartDisplay.html?gnmkdm=N253512&su=xxx
POST参数:
太多了不想列举了,没啥卵用。
地址:https://i.sjtu.edu.cn/xsxk/zzxkyzb_xkBcZyZzxkYzb.html?gnmkdm=N253512&su=xxx
必须参数(经过测试可以省略的就不写了):
kch_id
:课程号IDjxb_ids
:256位课号ID,似乎是实时获取的xkkz_id
:未知ID,和选课轮数有关,同一轮,同一课程类型为定值。sxbj
:未知定值1(是否已选上?)qz
:未知定值0njdm_id
:年级级数。zyh_id
:专业号ID。
返回值:
{"flag":"1"}
:选课成功{"flag":"0","msg":"所选教学班的上课时间与其他教学班有冲突!"}
:课程冲突{}
:参数错误{"flag":"-1","msg":"x,xxx,x"}
:人数已满