惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Simon Willison's Weblog
Simon Willison's Weblog
Help Net Security
Help Net Security
P
Privacy International News Feed
T
Threat Research - Cisco Blogs
C
Cisco Blogs
C
CERT Recently Published Vulnerability Notes
NISL@THU
NISL@THU
L
LINUX DO - 热门话题
Security Latest
Security Latest
A
Arctic Wolf
G
GRAHAM CLULEY
月光博客
月光博客
S
Securelist
D
Docker
J
Java Code Geeks
T
Troy Hunt's Blog
T
Tenable Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
SecWiki News
SecWiki News
S
Security @ Cisco Blogs
量子位
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
LINUX DO - 最新话题
Recent Commits to openclaw:main
Recent Commits to openclaw:main
aimingoo的专栏
aimingoo的专栏
博客园 - 【当耐特】
H
Heimdal Security Blog
The Hacker News
The Hacker News
博客园 - 三生石上(FineUI控件)
Application and Cybersecurity Blog
Application and Cybersecurity Blog
N
Netflix TechBlog - Medium
Vercel News
Vercel News
Forbes - Security
Forbes - Security
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
IT之家
IT之家
B
Blog
MongoDB | Blog
MongoDB | Blog
博客园 - 聂微东
Google DeepMind News
Google DeepMind News
S
Secure Thoughts
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Check Point Blog
云风的 BLOG
云风的 BLOG
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
The Blog of Author Tim Ferriss
L
Lohrmann on Cybersecurity
F
Full Disclosure
D
Darknet – Hacking Tools, Hacker News & Cyber Security
P
Proofpoint News Feed

Zyyo

Pi Agent Core:极简 AI Coding Agent 核心解析 锐捷校园网认证工具 - Zyyo 使用javscript手写json-parse - Zyyo Archlinux保姆级安装教程 - Zyyo 闲来无事-Vue3实现贪吃蛇小游戏 - Zyyo Zyang一款从0打造的优雅Typecho主题 - Zyyo 全新开源个人主页-ZYYO主页 - Zyyo 第一辆自行车-喜德盛ad300拿下 - Zyyo 临近期末的近况 - Zyyo 新跑表-华为GT Runner - Zyyo
一个综合树维教务系统的选课排课客户端基于nodejs - Zyyo
Zyyo · 2025-07-09 · via Zyyo

文章目录

  • 一个综合树维教务系统的选课排课客户端脚本基于nodejs
  • 声明
  • 排课原理
  • 待处理的问题
  • 📖 项目概览
  • 🛠️ 版本演进
  • v6.0
  • v5.0
  • v4.6
  • v4.5
  • v4.0
  • v3.0
  • v2.0
  • v1.0
  • 🚀 快速开始
  • 环境要求
  • 安装步骤
  • 打包单文件exe步骤
  • 使用说明
  • ⚠️ 重要提示
  • 📚 技术栈

数据统计

一个综合树维教务系统的选课排课客户端基于nodejs

Zyyo 2025-07-09 11

一个综合树维教务系统的选课排课客户端脚本基于nodejs

main分支处于开发中不可用状态,请前往master分支获取稳定的版本

Zyyo

声明

此项目为我的个人原创项目,唯一地址https://github.com/ZYYO666/fuck-shuwei

排课原理

先根据课程序号查询开课课程,格式化数据,排课,计算权重
统一某门课程的时间点数据,才能在不同课程不同时间点不冲突的排列,我采用了16x91的二维数组来格式化课程信息,将问题抽象为数据结构,单门课程不管开课情况多么复杂(一周多次开课,单双周开课等等)都是一个无关选课的数据结构
然后创新一个空二维数组,只需要你针对数组填充即刻判断是否排课冲突
此思路完全有我一人完成,实现部分代码也是我个人完成

待处理的问题

某些设备不知原因无法登陆

个别教务系统需要验证码

📖 项目概览

基于 Node.js 构建的智能选课系统解决方案,提供 WebUI 界面和高效缓存机制,支持多轮次选课操作。
main分支 正在开发的版本(未经测试)
master 经过稳定测试的老版本

🛠️ 版本演进

v6.0

  • 增加排课系统,用户只需要提供课程code便可以根据算法计算出最适合你的课表
  • 进一步优化代码
  • 用户数据完全依赖浏览器缓存,不产生任何本地文件

    v5.0

  • 再次大改,支持多客户端,多个客户端共用一个后端
  • 完全依赖websocket,去除http通信
  • 用户数据完全依赖浏览器缓存,不产生任何本地文件

v4.6

一个神奇的发现,给url加上随机参数竟然巧妙的绕过了点击过快验证
所以我们迎来了
并发抢课!!!
多个课程同时进行抢课、单个课程多线程请求

v4.5

删除各个模块对于登录过期的判断,改为响应拦截器判断是否过期,层层抛出指定异常到主程序,通过判断异常进行删除登录缓存,递归重试登录。

v4.0

我意识到采用终端进行选课对于一些人来说不是那么好,同时,在第一次执行程序过程中,加载整个 Node 运行时有一个巨大的延迟无法接受。
使用 Express 和 WebSocket 搭建 WebUI,前端使用 Vue3 setup 简单做了一个页面,日志数据采用 WebSocket 通信。
运行速度极快,内网服务器跑起来后,点击执行,中间几乎没有任何延迟。
一个优美的 WebUI,打开之后可以非常简单地配置、选课。

v3.0

将登录、选课等操作逻辑融合,简化操作。
采用配置文件的形式配置系统。
我意识到选课的流程有点长,中间因为各种各样的原因可能会导致程序异常,继续修改。
采用模块化设计,将一系列操作分文件处理,同时大量优化过程。
针对登录信息、获取选课缓存、ProfileID 等进行缓存处理,大幅提升选课速度,将选课的请求数量降到最低。

v2.0

2025.2.10 出于对设计的不满意进行大量修改并打包为 exe。
主要针对选课系统进行抓包逆向分析。
将选课的一系列操作封装为 Node.js 程序。
使用 Node.js 完成开发,一个基于 Chrome V8 引擎的 JavaScript 运行环境,具有高性能、高并发、轻量、可扩展等特点。

v1.0

  • 篡改猴脚本原型
  • DOM 事件自动化系统
  • 页面状态监听器
  • DOM 模拟点击实现
  • 监听用户操作和页面变化执行点击
我废寝忘食花一天完成了第一个版本。
2024.12.27 就完成了绝大部分功能。

🚀 快速开始

环境要求

  • Node.js 16+
  • Chrome 100+

安装步骤

# 克隆仓库
git clone https://github.com/ZYYO666/fuck-shuwei.git

# 安装依赖
npm install

# 启动服务
npm run start

打包单文件exe步骤

使用说明

  1. 访问 http://localhost:3000
  2. 按住 Ctrl + 单击进入管理界面
  3. 配置选课参数
  4. 实时查看 WebSocket 日志
  5. 查看运行结果

⚠️ 重要提示

! 以下情况需清除 缓存:
- 切换账号时
- 更换选课轮次时
- 遇到登录异常时

📚 技术栈

领域技术方案
前端Vue3 + Element Plus
后端NodeJs + Express + WebSocket

一个综合树维教务系统的选课排课客户端基于nodejs