自从智慧树的校内学分课(i.e. hike)播放页面用了个窒息的 JavaScript 混淆之后, 大部分前端的脚本都没法用了.
因为它会检查 DevTools 是否打开, 如果打开了就无法继续运行, 要分析的话由于混淆, 解读很麻烦.
这是什么?
这是一个 Python3 的自动脚本, 用于自动刷智慧树课堂课程, 为您节约有限的生命.
特征
- 支持校内学分课与知到共享学分课
- 自动回答弹题
- 设定时限
- 无需交互
运行环境
- Python3.10 及以上版本(或自行改写旧版不兼容的语法)
- requests
- pycryptodome 或其等价替代
- websockets
- Pillow>=8.1.1
- 执行
pip install -r requirements.txt
即可安装依赖
如何使用
因登陆验证改变目前仅有二维码登陆可用
本块分为
- Ultra Quick Start: 执行
python main.py
- 仅以交互输入信息, 除非开 DEBUG 模式否则不留任何敏感记录
Login
: 输入账号与密码- 使用配置文件
- 使用命令行参数
Fxxking
: 开始- 使用命令行参数
- 拉清单
- 参数列表
API
简易文档: 用于单独使用模块
*如果非常用地登入会需要短信验证, 您应该先用浏览器登入一次, 以让您的所在地列入白名单.
**信息优先级: 命令行 > 配置文件 > 交互输入
使用配置文件
配置文件 config.json 中有以下字段:
{
"username": "",
"password": "",
"qrlogin": true,
"proxies": {},
"logLevel": "INFO",
"qr_extra": {
"show_in_terminal": false,
"ensure_unicode": false
},
"push": {
"enable": false,
"token": "",
}
}
username
: 账号password
: 密码qrlogin
: 启用二维码登陆, 方便在服务器上部署, 优先级高于账号密码proxies
: 代理, 可留空, 在 Windows 上还可解决 Clash 等代理造成的证书错误, 详见 常见问题logLevel
: 日志等级, 可选NOTSET
DEBUG
INFO
WARNING
ERROR
CRITICAL
qr_extra
: QR 相关配置show_in_terminal
: 将二维码打印至终端ensure_unicode
: 仅使用 Unicode 字符打印二维码
push
: 基于 pushplus 的推送服务enable
: 启用推送token
: 推送 token
填入账号密码即可无干预自动登入 当前失效
*配置文件如果没有的话会在 main.py 执行时自动创建.
使用命令行参数登入
python main.py -u <username> -p <password>
python main.py -q
-u
--username
: 账号-p
--password
: 密码, 要注意密码将会明文留在记录中, 故不推荐使用-p
-q
--qrlogin
: 启用二维码登陆
Fxxking
以下假设您已经在配置文件中输入必要信息
*信息优先级: 命令行 > 配置文件 > 交互输入
cd fuckZHS
python main.py # 刷所有课
# 只刷课程 ID 为 114514 的课
python main.py -c 114514
# 想秒过可以设个很高的 SPEEEED
python main.py -s 444 # 速度很快
# 又或者可以限制每节课学习25分钟
python main.py -c 114514 -l 25
# 遇到问题想开 debug 模式, 顺带加个代理?
python main.py -c 114514 -d --proxy http://127.0.0.1:2333
# 又比如您想只看某几个视频, 那您可以使用 -v 传入视频 ID
python main.py -c 114514 -v 4060 9891
*课程 ID 为网址中的 courseId
(校内学分课) 或 recruitAndCourseId
(共享学分课) 参数
**更多选项请使用 -h
查看.
课程列表
使用 --fetch
参数可从服务器获得所有课程列表, 存储到 execution.json 里, 您可以删去不想完成的课程
当该文件存在且没有指定课程 ID 时, 先看看这个里面有没有写着课程 ID
*清单中 id
参数是必须的, 想额外拉清单时请注意
**修改时请注意 JSON 语法, 不然 Exceptions 会一下突开到脸上
python main.py --fetch
清单示例:
[
{
"name": "中国近现代史",
"id": "42"
},
{
"name": "思想道德与法治",
"id": "1919"
}
]
命令行参数列表
-c
,--course
: 课程 ID,courseId
或recruitAndCourseId
, 可输入多个-v
,--videos
: 视频 ID,fileId
或videoId
, 可输入多个-u
,--username
: 账号-p
,--password
: 密码-q
,--qrlogin
:-s
,--speed
:POWERR AND SPEEEEED!指定播放速度, 想要秒过可以设个很高的值(e.g. 644), 但不推荐. 默认为浏览器观看能到的最大值-t
,--threshold
: 完成时播放百分比, 高于该值视作完成-l
,--limit
: 单节课的时限, 如果您看得上内点习惯分就用吧-d
,--debug
: 调试级日志记录, 会记录请求到日志 (可能包含账号密码, 别乱分享, 当心被盒武-f
,--fetch
: 获取课程清单并存入 execution.json 文件--show_in_terminal
: 将二维码打印至终端--proxy
: 代理设置, 本来用来调试的(e.g. http://127.0.0.1:8080)-h
--help
: 显示帮助
运行示例如下:
请登录后查看评论内容