接的单子,老板大气给了200后不见踪影
无任何难度,android rsa,第二次加入了人脸识别,幌子,直接用实名的人脸绕过
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
import base64,requests
KEY='MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3Vsn6GuSivbc0mh1QFDjFVMdkb7lcAfsGdw6WuR0yM4GBP5MCJr301VX5aQucOKmpnpR4mhMSaCG0AVbK9VBNlghFcihfn3u4uMPGtqtXzKSJNZmLrzrS7Xd0ecUcAGHAnpEnXXgoUoYrAkthwKTBDayEIygQBrq+nMX53gST9QIDAQAB'
def RSA_encrypt(clear):
if clear=='':
return ''
rsa_key = RSA.import_key(base64.b64decode(KEY))
cipher = PKCS1_v1_5.new(rsa_key)
return base64.b64encode(cipher.encrypt(str(clear).encode('utf-8'))).decode()
def course_list():
url='http://app.lfanpei.com/api/index/apiSafeLearning/learningCourseDetail'
data={'apiToken':'','classId':classid,'courseId':courseId}
data={k:RSA_encrypt(v) for k,v in data.items()}
data['apiToken']=TOKEN
#print(data)
result=requests.post(url,data=data)
# print(result.text)
cl=[]
for i in result.json()['data']['apiSafeCourseDetail']['safeCourseChaptersList']:
for j in i['apiSafeCourseviewList']:
if j['faceContrastTimes']!=1:
face_Comparison()
return 0
if j['viewOver']!=1: # 1 为已完成的
cl.append([j['viewId'],TIME,j['courseViewHours'],j['viewTitle']])
else:
print('已完成',j['viewTitle'])
return cl
def learm_update():
url='http://app.lfanpei.com/api/video/apiSafeView/saveVideoPlayProgress'
data={'apiToken':'','classId':classid,'courseId':courseId,'viewfileId':viewfileid,'curPercent':'100','curChapter':'0','viewTime':TIME,'curView':'1','viewOver':'1'}
data={k:RSA_encrypt(v) for k,v in data.items()}
data['apiToken']=TOKEN
result=requests.post(url,json=data)
print('\t'+result.text)
if '不符' in result.text:
print('--------------- id ',viewTitle,courseViewHours)
print('exit-----------')
exit()
def learm_begin():
url='http://app.lfanpei.com/api/video/apiSafeView/updateVideoBeginTime'
data={'apiToken':'','classId':classid,'courseId':courseId,'viewfileId':viewfileid,'ip':'127.0.0.1'}
data={k:RSA_encrypt(v) for k,v in data.items()}
data['apiToken']=TOKEN
result=requests.post(url,data=data)
print('\t'+result.text)
def learm_list():
data = {'apiToken': TOKEN}
result = requests.post('http://app.lfanpei.com/api/index/apiSafeLearning/oneClickLearningIndex', data=data)
# print(result.text)
ll=[]
for i in result.json()['data']['learningIndexData']['classmateLearningList']:
ll.append([i['classId'],i['name']])
# print(i['classId'],i['name'])
return ll
# 人脸图片对比
def face_Comparison():
c=requests.get(get_face_img()).content
files={'headPictureFile':c}
data={'apiToken':'',
'buisnessId':classid,
'buisnessType':1,
'viewId':courseid,
'courseId':courseId
}
data={k:RSA_encrypt(v) for k,v in data.items()}
data['apiToken']=TOKEN
result=requests.post('http://app.lfanpei.com/api/liveCheck/apiSafeFace/faceComparison',data=data,files=files)
print(result.text)
def get_face_img():
url='http://app.lfanpei.com/api/user/apiSafeUserInfo/queryUserClassInfo'
data={'apiToken':'','classId':classid}
data={k:RSA_encrypt(v) for k,v in data.items()}
data['apiToken']=TOKEN
result=requests.post(url,data).json()
# print(result)
return result['data']['apiClassInformationPo']['apiUserDataSubmit']['picture']
# 暂时无用
# def get_classid():
# url='http://app.lfanpei.com/api/user/apiSafeUserInfo/dataRevision'
# result=requests.post(url,data={'apiToken':TOKEN}).json()
# return result['data']['classList'][0]['class_id']
TOKEN='Api eyJhbGciOiJIUzUxMiJ9.eyJhcGlfbG9naW5fdXNlcl9rZXkiOiIzODgwOCNhNzUwMzljYy1mYjUyLTRjZWUtYjY5Ny0zMzRlMTI2YjNjNmIifQ.yQpzqsx1xP4AEmPh_goIQJY61mVTcGWS3Wdqx5FRAgrC89Mm5g_-OYWSTK_kR0bTELxxyoRvDkhxV1n-iOpweQ'
courseId='1603'
classid='279'
viewfileid='3410'
# 设置一个时间 200000——6000000
TIME='510000'
# face_Comparison()
# learm_begin()
# learm_update()
# print(get_face_img())
learm_type=1 # 1->一键学习
if __name__ == '__main__':
if learm_type:
for classid,learm_title in learm_list():
print('当前学习classid',classid,learm_title)
for viewfileid,TIME,courseViewHours,viewTitle in course_list():
print(viewfileid,TIME,courseViewHours,viewTitle)
# print('\t当前课程courseid',courseid,viewTitle,courseViewHours)
learm_begin()
learm_update()
else:
if TOKEN and courseid:
for courseid,TIME,courseViewHours,viewTitle in course_list():
print('当前课程courseid',courseid,viewTitle,courseViewHours)
learm_begin()
learm_update()
# eyJhbGciOiAiTm9uZSJ9.eyJhcGlfbG9naW5fdXNlcl9rZXkiOiAiMzc0ODAjODAzYzk3MTItZTYwOC00YTM4LWE1ZjgtNGE5ZGQzNDQxYjA3In0K.