Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tsinghua-wlxt-cli

面向清华网络学堂 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 方向的清华新版网络学堂自动下载脚本,覆盖课程公告、课件、作业文件、讨论内容和课程信息,是更成熟的下载型平替。

License

MIT

About

Node.js CLI for authorized Tsinghua WLXT courseware and homework workflows

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages