一个非官方的 XJTLU Library 往年试卷下载 CLI。输入课程代码后,可以按考试类型和学年筛选,并通过临时 Playwright 浏览器会话完成校内身份认证。
This is an unofficial tool and is not affiliated with or endorsed by Xi'an Jiaotong-Liverpool University.
- 使用 ↑/↓/←/→ 选择 Final、Resit 和学年,Enter 接受默认“全部”
- 在终端本地询问账号与密码,密码仅显示为
•掩码 - 自动处理登录流程中的第二个
Login确认按钮 - 显示当前文件、百分比、字节进度和下载速度
- 使用
.tmp临时文件,验证 PDF 后再替换正式文件 - 已有有效 PDF 与远端大小一致时自动跳过
Ctrl+C时清理临时文件、Cookie、Web Storage 和临时浏览器配置
- Node.js 20.17 或更高版本
- Google Chrome
- 有权访问 XJTLU Library 试卷库的 XJTLU 账号
目前主要在 macOS 上验证。其他平台欢迎提交 issue 或 pull request。
直接从 GitHub Release 安装:
npm install -g github:ji415/xjtlulib#v1.0.0开发版本:
npm install -g github:ji415/xjtlulib安装后检查:
xjtlulib --help交互模式:
xjtlulib指定课程,交互选择类型和学年:
xjtlulib CAN207完整指定筛选条件与保存目录:
xjtlulib EEE211 \
--type final \
--year 2024-2025 \
--output ~/Desktop/Y3S1_Final/EEE211仅查看匹配试卷:
xjtlulib CPT203 --type all --year all --list强制重新下载同尺寸文件:
xjtlulib CAN207 --overwrite-t, --type <final|resit|all> 考试类型
-y, --year <YYYY-YYYY|all> 学年
-o, --output <目录> 保存目录
--list 只列出,不下载
--overwrite 强制重新下载同尺寸文件
-h, --help 帮助
默认保存目录为 ~/Downloads/<课程代码>。
- CLI 不接受账号或密码命令行参数。
- 密码不会写入配置文件、日志或磁盘。
- 登录表单提交后会清空可控的凭据引用和密码 Buffer。
- 每次运行使用独立临时 Chrome 配置;结束或取消时自动销毁。
- JavaScript 运行时无法保证对所有瞬时字符串副本进行密码学意义上的内存擦除。
如果登录流程要求其他 MFA,请在打开的 Chrome 窗口中完成。
git clone https://github.com/ji415/xjtlulib.git
cd xjtlulib
npm ci
npm test
npm link项目结构:
scripts/xjtlulib.mjs CLI 与认证/检索流程
scripts/tui.mjs Prompt、颜色、进度条和总结面板
scripts/downloader.mjs 流式下载、PDF 校验和临时文件管理
scripts/*.test.mjs 自动化测试
请仅下载你本人有权访问的资料,并遵守学校、图书馆及试卷材料适用的使用规定。MIT License 只适用于本仓库代码,不授予对下载内容的再分发权利。