这是一个用于 ZTplus 在线教育平台的自动答题助手项目,包含练习题收集、题库服务器和自动答题功能。
AutoAnswer.js测试题专用脚本(查询题库 + 智能答题)CollectQuestion.js- - 练习题专用脚本(收集题库 + 自动选A)question_server.py- 题库查询服务器题库*.json- 题库数据文件
question_bank.db- SQLite 题库数据库(自动生成)
确保你的系统已安装:
- Python 3.7+
- Tampermonkey 浏览器扩展
安装 Python 依赖:
pip install flask flask-cors sqlite3在项目目录下运行:
python question_server.py服务器将在 http://localhost:5000 启动,并自动扫描当前目录下的所有 JSON 题库文件。
- 打开 Tampermonkey 管理页面
- 点击"添加新脚本"
- 将对应的
.js文件内容复制粘贴进去 - 保存脚本
适用场景: 练习模式,用于收集题库和简单答题
主要功能:
- ✅ 自动选择第一个选项(通常是A或"正确")
- ✅ 自动收集题目和正确答案到本地存储
- ✅ 支持判断题、单选题、多选题
- ✅ 导出题库为 JSON 格式
- ✅ 自动确认和跳转下一题
使用方法:
- 访问练习题页面
- 脚本会自动显示控制面板
- 默认开启题库收集功能
- 点击"导出题库"可下载收集的题目
控制面板功能:
- 暂停/继续答题
- 查看收集进度
- 导出题库数据
- 清除缓存数据
适用场景: 正式考试,利用题库智能答题
主要功能:
- 🎯 自动识别页面中所有题目
- 🔍 向题库服务器查询正确答案
- 🤖 智能选择答案(支持单选和多选)
- ⚡ 控制答题速度,避免检测
- 📊 实时显示答题进度
支持题型:
- 判断题: A(正确) / B(错误)
- 单选题: A / B / C / D
- 多选题: ABC / ABCD / BD 等组合
使用方法:
- 确保题库服务器正在运行
- 访问测试页面(如:
http://www.ztplus.cn/pc/index.html#/paper/testing/...) - 等待页面加载完成
- 点击控制面板中的"开始答题"
- 脚本会自动处理所有题目
答题逻辑:
- 优先查询题库获取正确答案
- 如果题库中没有答案,默认选择A
- 多选题支持 "ABCD" 格式的答案
功能:
- 🗄️ 自动扫描并导入所有 JSON 题库文件
- 🔍 提供题目查询 API
- 📈 显示题库统计信息
- 🚫 避免重复导入相同题目
API 接口:
-
查询题目
GET /query?term=题目关键词返回匹配的题目和答案
-
服务器状态
GET /status返回服务器状态和题库统计
启动信息示例:
Initializing database...
Loading data from JSON to database...
Found 2 JSON files: ['题库1.json', '题库2.json']
Processing file: 题库1.json
File '题库1.json': Imported 99, Skipped 0
Processing file: 题库2.json
File '题库2.json': Imported 401, Skipped 0
=== Loading Summary ===
Total files processed: 2
Total questions imported: 500
Total questions skipped: 0
Data loading complete.
Starting Flask server on http://localhost:5000
- 使用
1.js脚本在练习模式下收集题目 - 导出题库为 JSON 文件(如
题库3.json) - 重启题库服务器,自动导入新题库
- 启动题库服务器
python question_server.py - 安装并启用
2.js脚本 - 访问考试页面
- 点击"开始答题",脚本自动处理
const CONFIG = {
ANSWER_DELAY_MIN: 200, // 最小答题间隔(毫秒)
ANSWER_DELAY_MAX: 400, // 最大答题间隔(毫秒)
RETRY_DELAY: 100, // 重试间隔
MAX_RETRIES: 3 // 最大重试次数
};- 端口:5000
- 数据库:SQLite (
question_bank.db) - 支持 CORS 跨域请求
JSON 题库文件格式:
[
{
"question": "职业道德是从业者在职业活动中应该遵循的符合自身职业特点的职业行为规范。( )",
"answer": "A"
},
{
"question": "在软件工程中,概要设计阶段的任务主要包括详细编写各个模块的源代码。( )",
"answer": "B"
}
]答案格式说明:
- 判断题:
"A"(正确) 或"B"(错误) - 单选题:
"A","B","C","D" - 多选题:
"ABC","ABCD","BD"等
1. 脚本不工作
- 检查页面 URL 是否匹配脚本的
@match规则 - 确认 Tampermonkey 已启用脚本
- 查看浏览器控制台错误信息
2. 题库服务器连接失败
- 确认服务器正在运行(
http://localhost:5000/status) - 检查防火墙设置
- 确认没有其他程序占用 5000 端口
3. 答题速度过快被检测
- 增加
CONFIG.ANSWER_DELAY_MIN和CONFIG.ANSWER_DELAY_MAX的值 - 避免在短时间内重复使用
4. 多选题选择错误
- 检查题库中答案格式是否正确(如 "ABCD")
- 确认页面中的多选框元素结构
-
查看控制台日志
- 打开浏览器开发者工具 (F12)
- 查看 Console 标签页的日志信息
-
测试题库服务器
curl "http://localhost:5000/status" curl "http://localhost:5000/query?term=职业道德"
-
检查脚本状态
- 控制面板会显示当前状态和进度
- 注意状态信息和错误提示
- ✨ 新增多选题支持
- 🔧 优化题目类型识别
- 📊 改进答题统计显示
- 🔄 移除练习题脚本的服务器依赖
- 🎯 优化选择逻辑,支持多种题型
- 📈 保留题库收集功能
- 🎉 初始版本发布
- 🤖 支持自动答题和题库收集
- 🗄️ 集成题库服务器
- 使用目的:本脚本仅供学习和研究使用,请遵守相关平台的使用条款
- 答题速度:建议设置合理的答题间隔,避免被系统检测
- 数据备份:定期备份题库数据,避免数据丢失
- 版本兼容:如果平台更新页面结构,可能需要更新脚本
如果遇到问题或需要技术支持,请:
- 检查本文档的故障排除部分
- 查看浏览器控制台的错误信息
- 确认所有依赖都已正确安装
免责声明: 本项目仅供学习和研究使用,使用者需要自行承担使用风险。请遵守相关平台的使用条款和法律法规。