这是一个用于自动完成在线课程学习的 Python 脚本。该脚本可以自动观看视频课程并完成课后习题。
- 自动获取并显示用户信息(打卡天数、学习天数等)
- 自动获取所有课程列表
- 支持本地缓存课程信息
- 自动播放未完成的课程视频
- 自动完成课后习题
- 支持断点续播功能
- 支持进度保存和恢复
- 支持键盘中断(Ctrl+C)时保存进度
- 确保已安装 Python 3.x
- 安装所需依赖:
pip install requests- 获取认证信息:
- 使用抓包工具(如 Proxypin、小黄鸟)获取以下信息:
- Authorization
- deviceId
- phoneModel
- apkVersion
- terminalVersion
- UserAgent
- 使用抓包工具(如 Proxypin、小黄鸟)获取以下信息:
在 main.py 中配置以下参数:
# 调试模式开关
DEBUG_MODE = False # 设置为 True 开启调试输出 默认:False
# DEBUG_MODE调试输出开关的作用为观测提交的数据以及返回的数据 供调试可视化观测脚本的请求信息 默认保持False
MODE = True # True: 自动观看模式, False: 重新观看模式 默认:True
# MODE开关的作用考虑到重复刷的时候无法通过在线在线api中的信息来获取状态
USE_LOCAL_PACKID = True # True: 使用本地缓存的课程信息
# USE_LOCAL_PACKID主要的作用为将要学习的课程列表进行缓存 并是否通过本地缓存的课程列表进行刷课
# USE_LOCAL_PACKID 的作用是来实现在很多的课程列表里面选择指定的课程进行刷
PACKID_FILE = "course_packids.json" # 保存 本地缓存的课程信息 的文件名
# 编辑PACKID_FILE 设置的文件 删除不需要刷的课程的json组 即可 需要保证json数据格式的正确!!!
# 认证信息(需要替换为你自己的信息)
#下面这些信息尽量通过抓包获取
Authorization = "你的认证信息"
phoneModel = "你的手机型号"
deviceId = "你的设备ID"
phoneMode = "你的手机型号"
apkVersion = "软件版本号"
terminalVersion = "系统版本号"
UserAgent = "你的 User-Agent"# 在此目录的下存在文件夹 “特质课程” 如需刷特质课程的视频请去特质课程文件夹下刷
# 本文件夹刷的为底栏:->学习 ->本期任务 里面的课程如果需要刷必修课程需要更改 queryMySelfCourseInfo.py下面的来进行获取课程列表的url变量
# queryMySelfCourseInfo.py url中的 semester数表示学期数
# 大一上学期为semester=1 大二上学期为semester=3
url = "https://prod.nxjyz.net/prod-api/app/student/course/queryMySelfCourseInfo?pageSize=100&semester=1"-
自动观看模式(MODE = True):
- 自动获取所有课程信息
- 按顺序观看未完成的课程
- 自动完成每节课的习题
- 支持中途退出并保存进度
-
重新观看模式(MODE = False):
- 从指定断点处继续观看
- 支持本地进度保存
- 适合需要重新学习的情况
python main.py-
课程信息缓存:
- 首次运行时会创建
course_packids.json文件 - 后续运行可以从本地读取课程信息
- 通过
USE_LOCAL_PACKID控制是否使用缓存
- 首次运行时会创建
-
进度保存:
- 重新观看模式下会创建
replay_progress.json - 记录当前观看进度
- 支持断点续播
- 重新观看模式下会创建
-
中断处理:
- 支持使用 Ctrl+C 安全退出
- 退出时会保存当前进度
- 自动上传已观看时长
-
main.py: 主程序入口 -
getInfo.py: 获取章节信息 -
getSectionDetail.py: 获取小节详情 -
queryMySelfCourseInfo.py: 获取课程信息 -
submitQuestionAnswer.py: 提交答案 -
uploadStudyRecord.py: 上传学习记录 -
userinfo.py: 获取用户信息
- 请合理使用,不要频繁重复操作
- 确保网络环境稳定
- 认证信息有效期有限,需要及时更新
- 建议开启调试模式以便查看详细日志
- 如遇到问题,查看错误提示信息进行排查
本脚本仅供学习交流使用,请勿用于其他用途。使用本脚本产生的任何问题由使用者自行承担。