


















Zyyo 2025-07-09 11
main分支处于开发中不可用状态,请前往master分支获取稳定的版本
Zyyo
此项目为我的个人原创项目,唯一地址https://github.com/ZYYO666/fuck-shuwei
先根据课程序号查询开课课程,格式化数据,排课,计算权重
统一某门课程的时间点数据,才能在不同课程不同时间点不冲突的排列,我采用了16x91的二维数组来格式化课程信息,将问题抽象为数据结构,单门课程不管开课情况多么复杂(一周多次开课,单双周开课等等)都是一个无关选课的数据结构
然后创新一个空二维数组,只需要你针对数组填充即刻判断是否排课冲突
此思路完全有我一人完成,实现部分代码也是我个人完成
某些设备不知原因无法登陆
个别教务系统需要验证码
基于 Node.js 构建的智能选课系统解决方案,提供 WebUI 界面和高效缓存机制,支持多轮次选课操作。
main分支 正在开发的版本(未经测试)
master 经过稳定测试的老版本
用户数据完全依赖浏览器缓存,不产生任何本地文件
一个神奇的发现,给url加上随机参数竟然巧妙的绕过了点击过快验证
所以我们迎来了
并发抢课!!!
多个课程同时进行抢课、单个课程多线程请求
删除各个模块对于登录过期的判断,改为响应拦截器判断是否过期,层层抛出指定异常到主程序,通过判断异常进行删除登录缓存,递归重试登录。
我意识到采用终端进行选课对于一些人来说不是那么好,同时,在第一次执行程序过程中,加载整个 Node 运行时有一个巨大的延迟无法接受。
使用 Express 和 WebSocket 搭建 WebUI,前端使用 Vue3 setup 简单做了一个页面,日志数据采用 WebSocket 通信。
运行速度极快,内网服务器跑起来后,点击执行,中间几乎没有任何延迟。
一个优美的 WebUI,打开之后可以非常简单地配置、选课。
将登录、选课等操作逻辑融合,简化操作。
采用配置文件的形式配置系统。
我意识到选课的流程有点长,中间因为各种各样的原因可能会导致程序异常,继续修改。
采用模块化设计,将一系列操作分文件处理,同时大量优化过程。
针对登录信息、获取选课缓存、ProfileID 等进行缓存处理,大幅提升选课速度,将选课的请求数量降到最低。
2025.2.10 出于对设计的不满意进行大量修改并打包为 exe。
主要针对选课系统进行抓包逆向分析。
将选课的一系列操作封装为 Node.js 程序。
使用 Node.js 完成开发,一个基于 Chrome V8 引擎的 JavaScript 运行环境,具有高性能、高并发、轻量、可扩展等特点。
我废寝忘食花一天完成了第一个版本。
2024.12.27 就完成了绝大部分功能。
# 克隆仓库
git clone https://github.com/ZYYO666/fuck-shuwei.git
# 安装依赖
npm install
# 启动服务
npm run start
http://localhost:3000! 以下情况需清除 缓存:
- 切换账号时
- 更换选课轮次时
- 遇到登录异常时
| 领域 | 技术方案 |
|---|---|
| 前端 | Vue3 + Element Plus |
| 后端 | NodeJs + Express + WebSocket |
一个综合树维教务系统的选课排课客户端基于nodejs
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。