从优学院导出考试题目数据,支持标准优学院和东莞理工学院版本。
优学院的考试系统基于前后端分离架构,前端通过 REST API 与后端通信。本工具通过分析浏览器网络请求,找到了关键的数据接口:
GET /exams/user/study/getExamReport?examId={examId}&traceId={userId}
该接口返回完整的考试报告 JSON 数据,包含:
- 考试基本信息(标题、时间等)
- 所有题目数据(题干、选项、答案、解析)
- 题目中嵌入的图片 URL
| 平台 | API 地址 | 前端地址 |
|---|---|---|
| 标准优学院 | utestapi.ulearning.cn |
utest.ulearning.cn |
| 东莞理工学院 | lms.dgut.edu.cn/utestapi |
lms.dgut.edu.cn |
两个平台的 API 结构完全相同,仅域名不同。
请求需要携带 Authorization 请求头,值为登录后获取的 Token。Token 存储在:
- Cookie:
AUTHORIZATION或token - 请求头:
authorization
Token 有时效性,过期后需重新从浏览器获取。
浏览器获取参数 → 调用API获取JSON → 解析题目数据 → 下载图片 → 生成导出文件
↓ ↓
examId 题干/选项/答案
traceId (userId) HTML → 纯文本
authorization 图片URL → 本地文件
- 支持多平台:标准优学院、东莞理工学院优学院
- 多种导出格式:JSON模板、Markdown、TeX、纯文本
- 自动下载题目中嵌入的所有图片
- 提供 Python GUI 程序和油猴浏览器脚本两种使用方式
- JSON 导出格式兼容 AI 提示词模板
ulearning-export/
├── python/ # Python 版本
│ ├── main.py # GUI 主程序
│ ├── config.py # 平台配置
│ ├── api.py # API 通信
│ ├── utils.py # 工具函数
│ └── exporter.py # 导出模块
├── js/
│ └── ulearning-export.user.js # 油猴脚本
└── tmpl.jsonc # JSON 模板格式说明
- Python 3.x
- Python 库:
requests,beautifulsoup4
pip install requests beautifulsoup4下载 release/优学院导出工具.exe,双击运行即可,无需安装 Python 环境。
cd python
python main.py在界面中选择平台、填入参数后点击"开始导出"。
程序支持自动加载 .env 文件中的参数,导出成功后会自动保存到 .env.old 文件,方便下次使用。
本工具适用于优学院考试答案解析页面:
- 登录优学院,进入考试的"答案解析"页面
- 按 F12 打开开发者工具,切换到 Network 标签
- 按 F5 刷新页面,搜索
token,点击任意请求后查看"负载"选项卡 - 找到
examId、traceId(即 userId)和authorization值
- 安装 Tampermonkey 浏览器扩展
- 新建脚本,粘贴
js/ulearning-export.user.js内容 - 访问优学院考试页面,点击右下角"导出试卷"按钮
| 格式 | 说明 |
|---|---|
| JSON | 按 tmpl.jsonc 佛脚刷题模板格式 |
| Markdown | 图文并茂,适合阅读和分享 |
| TeX | LaTeX 格式,适合高质量排版打印 |
| 纯文本 | 简单文本格式 |
输出目录结构:
ulearning_exports/
└── exam_{ExamID}_{考试标题}/
├── question_1_{题目ID}/
│ ├── question_data.txt
│ └── *.png (图片)
├── {考试标题}_完整试卷.md
└── {考试标题}_完整试卷.tex
- Token 有时效性,过期需重新获取
- 请勿频繁请求,避免触发反爬机制
- 仅供个人学习使用

