一、抓取登陆包

1
2
3
4
5
6
7
8
9
10
11
12
uuid_url="http://192.168.108.2:9090/api/captchaImage"
uuid_data=session.get(uuid_url).json()
uuid=uuid_data['uuid']
url="http://192.168.108.2:9090/api/loginUser"
data={
'username':usernumber+',100',
'password':password,
'uuid':uuid,
'roles':'学生',
'number':usernumber
}
data_user=session.post(url,data=data).json()

1.抓包发现参数出现uuid,通过.Burp Suite抓包发现uuid获取地址

2.直接post请求完成登陆,session用于继承Cookie等参数(结合后面的headers)

二、获取各项课程的参数

提交时需要的参数

获取具体内容时需要的参数

三、获取课程内pptx,mp4,测验,习题,实验等具体内容

视频秒过已完成,可自行加入完成后跳过

四、现已完成视频秒过、自动获取答案(自动提交还未完成)

1
2
3
4
5
主要思路:
获取课程列表以及相关参数值
测试获取提交时需要的参数
Python构造提交函数(补全参数)
批量提交!!!

五、全部代码(未完成,待更新)

注意:

1.能够完成视频秒过,以及正确答案的获取。自动提交答案存在一点问题(时间不够,考试要紧)还未解决!!!

2.有能力者可以自行完善或修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import json
import requests

session=requests.session()
usernumber="账号"
password="密码"

def login():
uuid_url="http://192.168.108.2:9090/api/captchaImage"
uuid_data=session.get(uuid_url).json()
uuid=uuid_data['uuid']
url="http://192.168.108.2:9090/api/loginUser"
data={
'username':usernumber+',100',
'password':password,
'uuid':uuid,
'roles':'%E5%AD%A6%E7%94%9F',
'number':usernumber
}
data_user=session.post(url,data=data).json()
data_token=data_user['token']
data_userid=data_user['loginUser']['user']['userId']
headers = {
'Content-Type': 'application/json;charset=UTF-8',
'Authorization': 'Bearer %s'%data_token,
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
}
user_data=session.get("http://192.168.108.2:9090/api/module/studentPersonalData/list?userId=%s"%data_userid,headers=headers).json()['rows'][0]
studentId=user_data['studentInfoId']
print("姓名:{}\n班级:{}\n专业:{}\n学号:{}\n学校:{}\n".format(user_data['studentName'],user_data['className'],user_data['professionalName'],user_data['studentNumber'],user_data['studentSchool']))
course_url = "http://192.168.108.2:9090/api/module/study/selectStudentRecentStudyListLimit8?userId=%s&courseName=&status=&courseType=" % data_userid
myCourse=session.get(course_url,headers=headers).json()['data']
courselist=""
courseid_list = []
courseid_type = []
for i in range(len(myCourse)):
courseid=myCourse[i]['courseId']
coursename=myCourse[i]['courseName']
courseType=myCourse[i]['courseType']# 1是专业课 2是实训课 3是综合实训
if courseType == '1':
courselist += "课程号(%d)-专业课程-%s:%s\n"%(i,courseType,coursename)
if courseType == '2':
courselist += "课程号(%d)-实训课程-%s:%s\n" % (i,courseType,coursename)
courseid_list.append(courseid)
courseid_type.append(courseType)
id=int(input("查询到以下课程:\n"+courselist+'请输入对应的课程号:'))
# 视频课件
if courseid_type[id]=='1':
# mp4秒过--完成
mp4_url="http://192.168.108.2:9090/api/module/csBindingResources/list?courseId=%s&resourcesType=2"%courseid_list[id]
mp4_data=session.get(mp4_url,headers=headers).json()['rows']
for k in range(len(mp4_data)):
resourceId=mp4_data[k]['bindingId']
resourcesName=mp4_data[k]['resourcesName']
videoTotalTime=mp4_data[k]['videoTotalTime']
teachPlanId=mp4_data[k]['teachPlanId']
data_id = '{"userId":%s,"status":2,"resourceId":%s,"courseId":%s,"courseResourceType":2,"teachPlanId":%s}'%(data_userid,resourceId,courseid_list[id],teachPlanId)
print(resourcesName,videoTotalTime)
mp4_id_url='http://192.168.108.2:9090/api/module/relevance'
id_data=session.post(mp4_id_url,headers=headers,data=data_id)
mp4_id=id_data.json()['data']
mp4_put_data = '{"id":%s,"userId":%s,"currentPlayTime":%s}'%(mp4_id,data_userid,videoTotalTime)
mp4_put = session.put('http://192.168.108.2:9090/api/module/relevance',headers=headers,data=mp4_put_data)
sx_data='{"id":%s,"userId":%s,"currentPlayTime":0,"status":3}'%(mp4_id,data_userid)
sxx=session.put('http://192.168.108.2:9090/api/module/relevance',headers=headers,data=sx_data).json()['msg']
print('视频秒杀----%s'%sxx)
print("此课程所有视频已完成!!!")
# 测验
test_url='http://192.168.108.2:9090/api/module/test/paper/perfect/getInternalResources?courseId=%s&enableStatus=2'%courseid_list[id]
test_data=session.get(test_url,headers=headers).json()['data']
# 先习题再测验
answer_list=[]
for l in range(len(test_data)):
testPaperId=test_data[l]['testPaperId']
cy_url="http://192.168.108.2:9090/api/module/joinExamination/testList?examinationStatus=1&courseId=%s&testPaperId=%s&studentId=%s"%(courseid_list[id],testPaperId,studentId)
cy_data=session.get(cy_url,headers=headers).json()['data']
answer_get = session.get('http://192.168.108.2:9090/api/module/joinExamination/viewTest?examinationStatus=1&examinationId=%s&studentId=%s'%(testPaperId, studentId), headers=headers).json()['list']
for m in range(len(answer_get)):
# 习题答案
if 'questionAnswer' in answer_get[m]:
questionAnswer = answer_get[m]['questionAnswer']
else:
# 测验多选
if 'sysQuestionBankOptAnswerList' in answer_get[m]:
questionAnswer = ""
for an in range(len(answer_get[m]['sysQuestionBankOptAnswerList'])):
if answer_get[m]['sysQuestionBankOptAnswerList'][an]['correctAnswer'] == 1:
questionAnswer += answer_get[m]['sysQuestionBankOptAnswerList'][an]['optionsContent'] + ','
questionAnswer = questionAnswer.strip(',')
else:
questionAnswer = answer_get[m]['correctAnswer']
# print(questionAnswer)
for p in range(len(cy_data)):
testPaperId=cy_data[p]['testPaperId']
topicId=cy_data[p]['topicId']
examinationInfoId=cy_data[p]['examinationInfoId']
answer_data={"examinationInfoId":examinationInfoId,"examinationId":testPaperId,"studentId":studentId,"topicId":topicId,"questionType":3,"studentExaminationAnswer":questionAnswer,"points":2}
answer_list.append(answer_data)
answer_url = 'http://192.168.108.2:9090/api/module/joinExamination/answer'
####################################批量提交答案
answer_post=session.post(answer_url,headers=headers,data=json.dumps(answer_list))
print(answer_post.json())
else:
title_url = "http://192.168.108.2:9090/api/courseAnalyse/csBindingExper/list?courseId=%s&ebableStatus=2"% courseid_list[id]
title = session.get(title_url, headers=headers).json()['rows']
for j in range(len(title)):
title_name = title[j]['testName']
print("%d、%s" % (j + 1, title_name))


if __name__=="__main__":
login()