辅助麦课安全网课学习-安全微伴刷课代做软件脚本-weiban.mycourse.cn

收录 101

辅助麦课安全网课学习-安全微伴刷课代做软件脚本-weiban.mycourse.cn
辅助麦课安全网课学习-安全微伴刷课代做软件脚本-weiban.mycourse.cn

import WeiBanAPI
import json
import time  # time.sleep延时
import os  # 兼容文件系统
import random

tenantCode = '51900002'  # 吉珠院校ID

"""
# 密码登录,已经失效
def pwLogin():
    print(
        '默认院校为吉林大学珠海学院,ID:' + tenantCode + '\n'
        + '若有需要,请自行抓包获取院校ID修改' + '\n'
    )

    # 登录信息输入
    account = input('请输入账号\n')
    password = input('请输入密码\n')

    # 获取Cookies
    print('\n获取Cookies中')
    cookie = WeiBanAPI.getCookie()
    print('Cookies获取成功')
    time.sleep(2)

    randomTimeStamp = random.randint(1E8, 1E12)
    print('验证码,浏览器打开 https://weiban.mycourse.cn/pharos/login/randImage.do?time={}'.format(randomTimeStamp))

    verifyCode = input('请输入验证码')

    # 登录请求
    loginResponse = WeiBanAPI.login(account, password, tenantCode, randomTimeStamp, verifyCode, cookie)
    return loginResponse
"""

def main():
    # 显示License
    '''
    with open("./LICENSE", encoding="utf-8") as licenseFile:
        print(licenseFile.read())
    '''
    # 登录
    # loginResponse = pwLogin()
    # 补打空cookie
    print("正在连接网课服务器...\n")
    cookie = ''

    loginResponse = WeiBanAPI.qrLogin()

    ### Gobal
    userProjectId = ''
    userId = ''
    ###

    try:
        print('登录成功,userName:' + loginResponse['data']['userName'])

        # 设置全局数据
        userProjectId = loginResponse['data']['preUserProjectId']
        userId = loginResponse['data']['userId']

        time.sleep(2)
    except BaseException:
        print('登录失败')
        print(loginResponse)  # TODO: 这里的loginResponse调用没有考虑网络错误等问题
        exit(0)

    # 请求解析并打印用户信息
    try:
        print('请求用户信息')
        stuInfoResponse = WeiBanAPI.getStuInfo(loginResponse['data']['userId'],
                                               tenantCode,
                                               cookie)
        print('用户信息:' + stuInfoResponse['data']['realName'] + '\n'
              + stuInfoResponse['data']['orgName']
              + stuInfoResponse['data']['specialtyName']
              )
        time.sleep(2)
    except BaseException:
        print('解析用户信息失败,将尝试继续运行,请注意运行异常')

    # 请求课程完成进度
    try:
        getProgressResponse = WeiBanAPI.getProgress(loginResponse['data']['preUserProjectId'],
                                                    tenantCode,
                                                    cookie)
        print('课程总数:' + str(getProgressResponse['data']['requiredNum']) + '\n'
              + '完成课程:' + str(getProgressResponse['data']['requiredFinishedNum']) + '\n'
              + '结束时间' + str(getProgressResponse['data']['endTime']) + '\n'
              + '剩余天数' + str(getProgressResponse['data']['lastDays'])
              )
        time.sleep(2)
    except BaseException:
        print('解析课程进度失败,将尝试继续运行,请注意运行异常')

    getListCourseResponse = {}

    # 请求课程列表
    try:
        getListCourseResponse = WeiBanAPI.getListCourse(loginResponse['data']['preUserProjectId'],
                                                        '3',
                                                        tenantCode,
                                                        '',
                                                        cookie)
        time.sleep(2)
    except BaseException:
        print('请求课程列表失败')

    print('解析课程列表并发送完成请求')

    for i in getListCourseResponse['data']:
        print('\n----章节码:' + i['categoryCode'] + '章节内容:' + i['categoryName'])
        courseList = WeiBanAPI.getCourseListByCategoryCode(i['categoryCode'], userProjectId, userId, tenantCode)
        for j in courseList['data']:
            print('课程内容:' + j['resourceName'] + '\nuserCourseId:' + j['userCourseId'])

            if (j['finished'] == 1):
                print('已完成')
            else:
                print('发送完成请求')
                WeiBanAPI.doStudy(userProjectId, j['resourceId'], tenantCode, userId)
                WeiBanAPI.finishCourse(j['userCourseId'], tenantCode, cookie)

                delayInt = WeiBanAPI.getRandomTime()
                print('\n随机延时' + str(delayInt))
                time.sleep(delayInt)


if __name__ == '__main__':
    main()

使用方法
Windows平台: 下载 AutoWeiBan.zip后,在本地创建一个文件夹,将压缩包解压到文件夹里,双击打开 start.bat ,根据命令行的提示进行操作即可。

全平台: 都可以在安装完Python3环境后,到项目路径下执行python main.py运行。

可以自定义的地方
院校码,这个没有深入研究如何获取到具体学校的tenantCode(院校码,用于发送请求时区分学校)。每个学校的都是不同的,如果你想获取自己学校的tenantCode的话,你可以自己试着登录一次,在浏览器开发者工具中的网络选项卡中查看网络请求信息抓取。或者实在不会操作可以提个Issues过来。(现已加入TODO,该信息可以在登录页面中请求到一个巨大的JSON)

课程间的延迟时间,在 WeiBanAPI.py文件 的头部中有两个参数分别为 baseDelayTime 基础延时秒数和 randomDelayDeviation 叠加随机延时差。 实际延迟时间 = 基础延时秒数 + 叠加随机延时差

none
打赏采用二维码方式。

添加新评论