Skip to content

Releases: Sirius-Peng/bitxk

Release list

v0.1.0

Choose a tag to compare

@Sirius-Peng Sirius-Peng released this 12 Sep 11:51

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.stdoutNone
    而校验登录态时会导入 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。

快速开始

  1. 解压,双击 GUI
  2. 点「用浏览器登录」,在弹出的浏览器里登录一次
  3. 点「添加」加上想盯的课(课程名要和选课系统显示的完全一致
  4. 保持「试跑」勾选,点「开始抢课」,观察余量是否正确
  5. 确认无误后取消「试跑」,正式开抢

说明

  • 需要 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 拦一次
  • 「用浏览器登录」的最后一步需要你手动在浏览器里完成登录(这既是限制也是它能抗改版的原因)