智慧树AI课查看作答情况
原理
前言
由于提交测试后无法再次查看答题情况,而未提交则可以进入答题界面查看作答情况并继续作答。并且在作答时保存作答界面的链接,在提交结果后再次访问保存的链接进入答题界面,可以查看作答情况,但是无法查看对错,所以可以通过该答题界面入手,强制查看作答情况及对错。
首先对作答界面的链接进行分析
如https://smartcourseexam.zhihuishu.com/ReviewExam/545928/2/3/1836997819974684672/%E6%B0%B4%E7%9A%84%E6%B1%A1%E6%9F%93%E6%8C%87%E6%A0%87%E5%92%8C%E5%87%BA%E8%B7%AF-%E9%97%AE%E7%AD%94%E9%A2%98/1/true/1/0/33791724?examPaperId=33791724&point=0&classId=1617&taskId=2609&isObjective=false&fromSmart=true
,其中有几个参数545928
、1836997819974684672
、%E6%B0%B4%E7%9A%84%E6%B1%A1%E6%9F%93%E6%8C%87%E6%A0%87%E5%92%8C%E5%87%BA%E8%B7%AF-%E9%97%AE%E7%AD%94%E9%A2%98
、33791724
、1617
、2609
。
再在如图所示界面使用开发者模式(F12)进行抓包。
进入答题的前置页面open
。
F12界面
{
"code": 200,
"message": "OK",
"data": {
"examId": 679920,
"examTestId": 545928,
"examName": "水的污染指标和出路-问答题",
"paperId": 33791724,
"courseId": "1836997819974684672",
"questionNum": 6,
"examDuration": 0,
"totalScore": 100.00,
"knowledgeNum": 7,
"score": null,
"lastScore": null,
"remainderDuration": 97146,
"completedQuestionNum": 0,
"remainderQuestionNum": 6,
"examPaperType": "ASSIGN",
"examStatus": 3,
"isObjective": false,
"isLookAnswer": 1,
"isAllowCopy": 0,
"canRestart": false,
"teacherRemark": null,
"openTime": "2024-12-06 13:23:09",
"startTime": "2024-10-08 16:32:00",
"avatar": "https://image.zhihuishu.com/zhs/ablecommons/demo/201804/86a92266ccaa4b48a0e05859b4ef3d0e.jpg",
"teacherName": "陈雪松",
"endTime": "2024-12-07 16:32:00",
"taskType": 1,
"taskDescribe": "请及时完成作业",
"limitTime": 0,
"remainTime": 97146,
"classId": 1617,
"status": 1,
"lastAnswerResult": null,
"codeQuestion": false,
"examType": 0,
"redoStatus": 0
},
"traceId": "0ced76896870e38bd83acd28cc08a1f4"
}
由此可知上述链接中各个值对应的参数:
smartcourseexam.zhihuishu.com/ReviewExam/examTestId
/2/3/courseId
/examName
/1/true/1/0/paperId
?examPaperId=paperId
&point=0&classId=classId
&taskId=2609&isObjective=false&fromSmart=true
由于还有几个参数在响应中未提到,尝试将他们删除后访问页面,若页面仍可以访问,则可以判断该参数为非必要参数。并对链接独立的数字0,1,2,3
进行穷举替换,来推断他们的用处。最终得出的链接如下:
smartcourseexam.zhihuishu.com/ReviewExam/examTestId
/2/3/courseId
/examName
/1/true/1/0/paperId
?examPaperId=paperId
&classId=classId
其中,examTestId
后面的2
用于控制答题节目是否显示倒计时,1
为不显示。2
为显示。examName
后的1
用于控制页面显示,0
为答题界面,1
为查看作答结果界面。
结论
examTestId
、courseId
、examName
、paperId
、classId
均可通过开发者模式抓包进入答题的前置页面获取,而通过参数构造链接即可查看对应的作答情况。
当然还有更简单的方法...就是在未提交时提前保存链接或者通过另一个未做该作业的账号保存链接即可,但是注意将examName
后的1
修改为2
。