-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathWeiBanAPI.py
More file actions
125 lines (99 loc) · 3.99 KB
/
WeiBanAPI.py
File metadata and controls
125 lines (99 loc) · 3.99 KB
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
113
114
115
116
117
118
119
120
121
122
123
124
125
from urllib import request, parse
import http.cookiejar
import json
import random
baseDelayTime = 1 # 基础延时秒数
randomDelayDeviation = 1 # 叠加随机延时差
getCookiesURL = 'https://weiban.mycourse.cn/#/login' # 请求Cookies URL
loginURL = 'https://weiban.mycourse.cn/pharos/login/login.do' # 登录请求 URL
getNameURL = 'https://weiban.mycourse.cn/pharos/my/getInfo.do' # 请求姓名 URL
getProgressURL = 'https://weiban.mycourse.cn/pharos/project/showProgress.do' # 请求进度 URL
getListCourseURL = 'https://weiban.mycourse.cn/pharos/usercourse/listCourse.do' # 请求课程列表 URL
finishCourseURL = 'https://weiban.mycourse.cn/pharos/usercourse/finish.do' # 请求完成课程
getRandImageURL = 'https://weiban.mycourse.cn/pharos/login/randImage.do'
doStudyURL = 'https://weiban.mycourse.cn/pharos/usercourse/study.do'
# 获取一个新Cookie
def getCookie():
cookie = http.cookiejar.CookieJar()
handler = request.HTTPCookieProcessor(cookie)
opener = request.build_opener(handler)
return cookie
# 登录请求
def login(keyNumber, password, tenantCode, randomTimeStamp, verifyCode, cookie):
param = {
'keyNumber': keyNumber,
'password': password,
'tenantCode': tenantCode,
'time': randomTimeStamp,
'verifyCode': verifyCode
}
data = bytes(parse.urlencode(param), encoding='utf-8')
req = request.Request(url=loginURL, data=data, method='POST')
responseStream = request.urlopen(req)
responseText = responseStream.read().decode('utf-8')
responseJSON = json.loads(responseText)
return responseJSON
# return responseJSON['data']['userId']
# 获取学生信息
def getStuInfo(userId, tenantCode, cookie):
param = {
'userId': userId,
'tenantCode': tenantCode
}
data = bytes(parse.urlencode(param), encoding='utf-8')
req = request.Request(url=getNameURL, data=data, method='POST')
responseStream = request.urlopen(req)
responseText = responseStream.read().decode('utf-8')
responseJSON = json.loads(responseText)
return responseJSON
# 获取课程进度
def getProgress(userProjectId, tenantCode, cookie):
param = {
'userProjectId': userProjectId,
'tenantCode': tenantCode
}
data = bytes(parse.urlencode(param), encoding='utf-8')
req = request.Request(url=getProgressURL, data=data, method='POST')
responseStream = request.urlopen(req)
responseText = responseStream.read().decode('utf-8')
responseJSON = json.loads(responseText)
return responseJSON
# 获取课程列表
def getListCourse(userProjectId, chooseType, tenantCode, name, cookie):
param = {
'userProjectId': userProjectId,
'chooseType': chooseType,
'tenantCode': tenantCode,
'name': name
}
data = bytes(parse.urlencode(param), encoding='utf-8')
req = request.Request(url=getListCourseURL, data=data, method='POST')
responseStream = request.urlopen(req)
responseText = responseStream.read().decode('utf-8')
responseJSON = json.loads(responseText)
return responseJSON
# 完成课程请求
def finishCourse(userCourseId, tenantCode, cookie):
param = {
'userCourseId': userCourseId,
'tenantCode': tenantCode,
}
url_values = parse.urlencode(param) # GET请求URL参数
req = request.Request(url=finishCourseURL + '?' + url_values, method='GET')
responseStream = request.urlopen(req)
responseText = responseStream.read().decode('utf-8')
print(responseText)
def getRandomTime():
return baseDelayTime + random.randint(0, randomDelayDeviation)
def doStudy(userProjectId, userCourseId, tenantCode):
param = {
'userProjectId': userProjectId,
'courseId': userCourseId,
'tenantCode': tenantCode
}
data = bytes(parse.urlencode(param), encoding='utf-8')
req = request.Request(url=doStudyURL, data=data, method='POST')
responseStream = request.urlopen(req)
responseText = responseStream.read().decode('utf-8')
print(responseText)
return