面向清华网络学堂 learn.tsinghua.edu.cn 的 Node.js 命令行工具,用于在本人授权账号下列出课程、探测课件/作业接口、下载课件与作业附件,并以显式确认方式提交作业。
本项目不会把用户名和密码写入源码。登录态、调试 HTML、可信浏览器 token 和下载文件默认写入本地 wlxt-output/,该目录已在 .gitignore 中排除。
- SSO 登录,支持清华二次认证流程。
- 保存可信浏览器 token,后续通常不需要每次输入短信验证码。
- 列出当前学期课程并扫描各课程作业列表。
- 下载教师提供的作业附件和课件文件。
- 发现并记录课件、作业列表、作业详情、作业提交等接口。
- 作业提交默认 dry-run,只有同时提供文件和
--confirm-submit才会真实提交。
- Node.js 20 或更新版本。
- 一个你有权使用的清华网络学堂账号。
安装依赖:
npm install
npm run check当前没有第三方 npm 依赖,npm install 主要用于生成本地项目环境。
通过环境变量传入账号密码:
read -r WLXT_USER
read -r -s WLXT_PASS
WLXT_USER="$WLXT_USER" WLXT_PASS="$WLXT_PASS" node bin/wlxt.mjs --all-courses也可以通过 stdin 传两行:第一行用户名,第二行密码。
首次换设备登录可能触发二次认证。推荐短信流程:
WLXT_USER="$WLXT_USER" WLXT_PASS="$WLXT_PASS" node bin/wlxt.mjs --mobile-code如果发送短信后进程退出,可以用验证码恢复:
node bin/wlxt.mjs --resume-code 123456列出当前课程并扫描作业:
WLXT_USER="$WLXT_USER" WLXT_PASS="$WLXT_PASS" node bin/wlxt.mjs --all-courses下载所有当前课程的作业附件:
WLXT_USER="$WLXT_USER" WLXT_PASS="$WLXT_PASS" \
WLXT_ASSIGNMENT_DOWNLOAD_DIR="./wlxt-output/assignment-files" \
node bin/wlxt.mjs --all-courses --download-assignment-files探测某门课的课件接口,需要传入该课件页 URL:
WLXT_USER="$WLXT_USER" WLXT_PASS="$WLXT_PASS" \
node bin/wlxt.mjs "https://learn.tsinghua.edu.cn/f/wlxt/kj/wlkc_kjxxb/student/beforePageList?wlkcid=<wlkcid>&sfgk=0"下载某门课课件:
WLXT_USER="$WLXT_USER" WLXT_PASS="$WLXT_PASS" \
node bin/wlxt.mjs --download-courseware "https://learn.tsinghua.edu.cn/f/wlxt/kj/wlkc_kjxxb/student/beforePageList?wlkcid=<wlkcid>&sfgk=0"作业提交 dry-run:
WLXT_USER="$WLXT_USER" WLXT_PASS="$WLXT_PASS" \
node bin/wlxt.mjs --submit-wlkcid <wlkcid> --submit-xszyid <xszyid>真实提交必须显式确认:
WLXT_USER="$WLXT_USER" WLXT_PASS="$WLXT_PASS" \
node bin/wlxt.mjs \
--submit-wlkcid <wlkcid> \
--submit-xszyid <xszyid> \
--submit-file ./answer.zip \
--submit-desc "作业说明" \
--confirm-submit默认输出目录是 ./wlxt-output,可用这些环境变量调整:
WLXT_OUT_DIR: 登录态、报告、调试快照目录。WLXT_DOWNLOAD_DIR: 课件下载目录。WLXT_ASSIGNMENT_DOWNLOAD_DIR: 作业附件下载目录。WLXT_DOWNLOAD_LIMIT: 限制课件下载数量,0表示不限制。
最新探测报告写入 wlxt-output/wlxt-probe-report.json,同时打印到 stdout。
这个工具只适合自动化你自己有权访问的课程内容。不要把 wlxt-output/、cookies、可信浏览器 token、课程文件、作业附件或个人账号信息提交到公开仓库。平台接口可能变化,真实提交作业前请先跑 dry-run 并检查报告里的提交目标。
- Trinkle23897/learn2018-autodown: Python/Selenium 方向的清华新版网络学堂自动下载脚本,覆盖课程公告、课件、作业文件、讨论内容和课程信息,是更成熟的下载型平替。
MIT