Releases: Sirius-Peng/bitxk
Release list
v0.1.0
v0.1.0
首个可用版本。北京理工大学本科生选课系统(金威 wisedu xsxkapp)的课程余量轮询与自动选课工具。
下载
Windows 10/11 x64
| 文件 | 大小 | 说明 |
|---|---|---|
BIT-Course-Helper-0.1.0-setup.exe |
40 MB | 推荐:双击安装,建开始菜单与桌面快捷方式。按用户安装,不需要管理员权限 |
...-windows-portable-gui.exe |
14 MB | 免安装单文件,双击即用图形界面 |
...-windows-portable-cli.exe |
14 MB | 免安装单文件,命令行用 |
...-windows-x64.zip |
46 MB | 解压即用,启动最快(0.1 秒) |
macOS 11+
| 文件 | 大小 | 说明 |
|---|---|---|
BIT-Course-Helper-0.1.0-macos.tar.gz |
41 MB | 完整包:BIT-Course-Helper.app + 命令行版 |
...-macos-portable-gui |
13 MB | 单个可执行文件,双击开界面 |
...-macos-portable-cli |
13 MB | 单个可执行文件,命令行用 |
单文件版启动会慢一点:每次运行都要把内置的 Python 运行时解压到临时目录
(Windows 约 1.4 秒,macOS 约 0.2 秒)。抢课本身是挂着跑的,无所谓;
但如果你要频繁敲命令行,用安装版或文件夹版更合适。
Windows 为什么有两个单文件 exe:PE 文件只能有一个子系统。
console=False的 exe 双击不弹黑框,但 stdout 会被丢弃、命令行拿不到输出;
所以 GUI 版和 CLI 版必须分开打包。
构建状态
- macOS 产物为最新(2026-09-16),包含全部修复。
- Windows 产物构建于 2026-09-12,尚未包含随后三项修复,其中
「cookie 路径匹配」是致命的 —— Windows 版的浏览器登录目前
可能一直显示未登录。请暂时使用 macOS 版,或等 Windows 版更替。
首次运行会被拦一次(未签名):Windows 点「更多信息」→「仍要运行」;
macOS 右键点图标 →「打开」→ 再确认,或执行
xattr -dr com.apple.quarantine BIT-Course-Helper.app。
本次修复
- 不必每次登录了:程序优先复用
.bitxk_session.json里缓存的登录态,
启动时后台打一次真实接口校验 —— 有效就直接可用,失效才提示重新登录,
连不上(网络问题)则保留登录态而不丢弃。 - 浏览器 profile 现在会正常落盘:此前关闭浏览器用的是强杀,
Chrome 来不及把 profile 写到磁盘。改为走 CDP 的Browser.close优雅退出。 - 登录态失效即崩溃(Windows):GUI 版无控制台,
sys.stdout为None,
而校验登录态时会导入cli模块并调用sys.stdout.isatty(),报
'NoneType' object has no attribute 'isatty'。现已全部判空。 - 非 UTF-8 的会话/配置文件导致崩溃:Windows 上用记事本改动过就会变成 GBK,
读取时抛出的UnicodeDecodeError不在原来的捕获范围内。现在会正确降级,
并提示"请另存为 UTF-8"。
如果你之前遇到上述问题,请重新下载本次构建的产物。
产物文件名与旧版相同,请按上传时间(2026-09-17)或 SHA256 区分。
关于"打开浏览器还是未登录":
SESSION/JSESSIONID/GS_SESSIONID/_WEU
都是会话 cookie,Chrome 关闭时按设计清除,与服务端行为有关。
程序层面的免登录靠.bitxk_session.json,与浏览器是否还登着无关 ——
也就是说启动程序后直接查询即可,不需要再点「用浏览器登录」。
功能
- 图形界面:课程管理、实时余量表(按状态着色)、运行日志、一键抢课
- 浏览器登录:用你自己已登录的 Chrome/Edge 取登录态,不依赖 SSO 实现细节,短信验证码/2FA 均可用
- 余量轮询:有人退课即自动补选,按课程优先级排序
- 安全试跑:只观察余量、绝不提交,确认匹配无误后再正式开抢
- 智能退避:被限流自动放慢;遇到「在线人数上限」自动等待重试;Token 失效自动重登
- 命令行版:另附精简 CLI(
BIT-Course-Helper-cli/),适合服务器与计划任务
为什么这么小
发行包不包含浏览器内核。「浏览器登录」驱动的是你本机已装的 Chrome/Edge/Chromium,
通过 DevTools Protocol 连接——这正是没有采用 Playwright/Selenium 的原因(那需要约 250MB 内核)。
另外打包时排除了 cryptography/bcrypt(非本项目依赖,被 PyInstaller 误收,约 11MB)、
numpy/pandas/PIL/其它 GUI 框架,并对二进制做了 strip。
快速开始
- 解压,双击 GUI
- 点「用浏览器登录」,在弹出的浏览器里登录一次
- 点「添加」加上想盯的课(课程名要和选课系统显示的完全一致)
- 保持「试跑」勾选,点「开始抢课」,观察余量是否正确
- 确认无误后取消「试跑」,正式开抢
说明
- 需要 Windows 10/11 x64 或 macOS 11+
- 需要本机有 Chromium 系浏览器(Windows 通常自带 Edge)
- 建议在校内网络下使用;校外可先在浏览器登录再手动导入登录态
免责声明
仅供个人学习与自用,操作的是你自己的账号。请勿把轮询间隔调到 1 秒以下
(默认 2 秒是刻意保守的取值),也请勿用于批量囤课或倒卖。
使用产生的后果由使用者自负,请遵守学校教学管理规定。
关于选课系统网址
入口是 http://xk.bit.edu.cn/xsxkapp/sys/xsxkapp/*default/index.do。
可以直接把它粘进配置(api_base)—— 工具会自动升级成 https。这是必须的:
该系统全站强制 HTTPS,http:// 的请求会收到 302,而 HTTP 客户端跟随 302 时
会把 POST 降级成 GET 并丢掉请求体,导致查询/选课参数全部丢失。
v0.1.0 发布包已包含这个修复(配置加载时归一化 + 运行时收到 http→https 跳转
时自动升级基址并重发原请求)。
已知限制
- 二进制未做代码签名,首次运行会被 SmartScreen / Gatekeeper 拦一次
- 「用浏览器登录」的最后一步需要你手动在浏览器里完成登录(这既是限制也是它能抗改版的原因)