基于 Tauri + Rust + Vue 3 的多平台购票工作台,支持 大麦 H5 与 Bilibili 会员购。
左侧切换平台,分别填写账号与活动信息。等待开售、购票重试与取消由 Rust 后端管理,切换页面不影响已启动的任务。
本项目用于技术学习与交流,请合理使用,勿用于商业代抢。
subscription-proxy-pool = "0.1.0" 管理多个订阅、刷新节点、自动轮换或固定节点,兼容原有手动代理地址。ua_generator 生成随机 User-Agent;会员购的相关请求指纹同步使用当次 UA。前往 Releases 选择对应系统的安装包。新功能以当前源码为准,已发布安装包可能尚未包含。
需要 Node.js 18+、Rust 1.89 或更新的稳定版,以及 Tauri 1 系统依赖。
npm ci
npm run tauri dev
项目通过 .cargo/config.toml 使用 crates.io 官方 sparse 源,避免全局镜像缺少 subscription-proxy-pool 等依赖导致启动失败;无需修改本机全局 Cargo 配置。使用 pnpm 时也可执行 pnpm run tauri dev。
仅预览界面:
npm run dev
浏览器预览不执行平台请求、数据库操作或购票任务,这些功能需要在桌面应用中使用。
构建:
npm run build
npm run tauri build
安装包位于 src-tauri/target/release/bundle/。
_m_h5_tk;Bilibili 需要包含 SESSDATA 和 bili_jct。大麦链接示例:https://m.damai.cn/damai/detail/item.html?itemId=720545258599
会员购链接支持 show.bilibili.com/platform/detail.html?id=... 与 mall.bilibili.com/neul-next/ticket-renovation/detail.html?id=...。
修正值定义为:服务器时间 − 本机时间。例如修正值为 +150 ms,表示本机慢了约 150 毫秒。
后端等待时长为 目标开售时间 − 修正值 − 当前本机时间,前端倒计时仅用于显示。已启动任务使用创建时的修正值,后续校时不会改变其触发时间。
api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp 与 api.bilibili.com/x/report/click/now,校时请求不携带账号 Cookie。账号在 设置与帮助 → 账号与 Cookie 中独立保存,支持按平台添加多个账号、设默认、更新和删除。Cookie 以明文存于当前设备的统一账号库 tickets.accounts;购票和监控表单只保存账号 ID,不复制凭证。删除账号会移除账号库中的 Cookie;更新或删除不改变已启动任务持有的凭证,后续查询和任务使用当前账号,更新后需重新加载已打开的活动。被删除的显式选择需要重新选择账号。
启动时自动迁移旧版购票、监控表单中勾选“记住 Cookie”的凭证,同平台相同 Cookie 合并,不同 Cookie 分别保留为账号;迁移成功后清除旧表单中的凭证。未勾选记住的凭证不会保存。账号持久化失败会提示错误,原数据保留,可重新读取后重试。保存账号只校验格式,不代表登录仍有效;Cookie 过期后在账号管理中更新一次即可。
完整观演人信息只用于当前运行,不写入日志或任务历史。通用设置统一保存在本机 tickets.settings,保存成功后才生效;旧 SQLite SETTINGS 中的代理和运行标识会补充迁入尚未保存的字段,原表保留。日志继续使用 LOG / 运行标识_LOG 表,写入使用参数绑定。开发环境与正式环境分别使用 sql-test.db 与 sql.db。
在 设置与帮助 → 界面配色 中选择预设或自定义主色,可切换浅色/深色。修改立即预览;点击 保存设置 后持久化。未保存就离开设置页时恢复已保存配色。
在 代理与订阅 中选择 订阅节点,添加名称和 HTTP(S) 订阅链接,选择要使用的订阅并保存。选中订阅会自动加载,也可点击 刷新订阅 手动更新;选择节点后再次保存。各平台页仍需勾选 使用全局代理。
微信通知在 Tickets 内直接绑定,无需安装 OpenClaw 或配置大模型:
购票任务在平台确认创建订单成功后发送一次微信通知,包含平台、活动、场次、票档和官方支付入口。通知表示订单已创建、等待支付,不代表支付成功,请及时前往官方页面处理。微信未绑定、登录失效或发送失败不会阻止购票,也不改变成功订单或触发重新下单;通知结果会显示在任务状态中,发送失败会单独弹出提示。任务启动时未启用提醒的,成功后明确显示“微信通知未发送:任务启动时未启用提醒”,可从任务卡片进入微信通知设置。发送超时可能已送达,因此不自动重复发送。
实现依据腾讯公开的 微信插件协议,由 Rust 后端通过 HTTPS 完成扫码、收取会话消息和发送通知。二维码在本地生成,登录凭证与会话令牌以未加密的明文保存在应用数据目录的 wechat/binding.json,仅由后端读写,不传入前端设置或操作日志;Unix 系统使用目录 0700、文件 0600 权限。旧版 OpenClaw 路径、账号和接收人配置需要重新扫码绑定,不能直接用于当前连接。
保持应用运行才能接收消息并发送提醒,退出应用后停止通知。绑定保留到下次启动,可在设置中解除;切换设置页面会取消尚未完成的扫码。购票与监控任务固定启动时已保存的提醒开关、Bot 账号和接收人,更改设置只对新任务生效。同一账号重新登录或收到新消息时,会使用更新后的凭证。长时间没有对话导致发送失败时,请先向 Bot 发一条消息刷新会话,登录失效则重新扫码。长期会话有效期及服务端主动发送限制仍需实际微信账号验证,测试通知成功不代表可以无限期主动推送。
监控只读取详情接口,不通过尝试下单探测库存。明确有库存或可售状态才通知;字段缺失、未知状态或目标票档暂未返回时继续等待。库存数为 0、未开售、停售、售罄、登记/候补状态不视为有票。查询失败会延迟重试,连续 5 次失败后停止并提示检查网络及登录状态。接口有缓存或不公开库存时可能无法及时检测,收到通知时票也可能已售出,最终以官方页面为准。
createV2 链路,支持有效订单编号确认和官方支付入口。基于 Tauri + Rust + Vue 3 的多平台购票工作台,支持 大麦 H5 与 Bilibili 会员购。
左侧切换平台,分别填写账号与活动信息。等待开售、购票重试与取消由 Rust 后端管理,切换页面不影响已启动的任务。
本项目用于技术学习与交流,请合理使用,勿用于商业代抢。
subscription-proxy-pool = "0.1.0" 管理多个订阅、刷新节点、自动轮换或固定节点,兼容原有手动代理地址。ua_generator 生成随机 User-Agent;会员购的相关请求指纹同步使用当次 UA。前往 Releases 选择对应系统的安装包。新功能以当前源码为准,已发布安装包可能尚未包含。
需要 Node.js 18+、Rust 1.89 或更新的稳定版,以及 Tauri 1 系统依赖。
npm ci
npm run tauri dev
项目通过 .cargo/config.toml 使用 crates.io 官方 sparse 源,避免全局镜像缺少 subscription-proxy-pool 等依赖导致启动失败;无需修改本机全局 Cargo 配置。使用 pnpm 时也可执行 pnpm run tauri dev。
仅预览界面:
npm run dev
浏览器预览不执行平台请求、数据库操作或购票任务,这些功能需要在桌面应用中使用。
构建:
npm run build
npm run tauri build
安装包位于 src-tauri/target/release/bundle/。
_m_h5_tk;Bilibili 需要包含 SESSDATA 和 bili_jct。大麦链接示例:https://m.damai.cn/damai/detail/item.html?itemId=720545258599
会员购链接支持 show.bilibili.com/platform/detail.html?id=... 与 mall.bilibili.com/neul-next/ticket-renovation/detail.html?id=...。
修正值定义为:服务器时间 − 本机时间。例如修正值为 +150 ms,表示本机慢了约 150 毫秒。
后端等待时长为 目标开售时间 − 修正值 − 当前本机时间,前端倒计时仅用于显示。已启动任务使用创建时的修正值,后续校时不会改变其触发时间。
api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp 与 api.bilibili.com/x/report/click/now,校时请求不携带账号 Cookie。账号在 设置与帮助 → 账号与 Cookie 中独立保存,支持按平台添加多个账号、设默认、更新和删除。Cookie 以明文存于当前设备的统一账号库 tickets.accounts;购票和监控表单只保存账号 ID,不复制凭证。删除账号会移除账号库中的 Cookie;更新或删除不改变已启动任务持有的凭证,后续查询和任务使用当前账号,更新后需重新加载已打开的活动。被删除的显式选择需要重新选择账号。
启动时自动迁移旧版购票、监控表单中勾选“记住 Cookie”的凭证,同平台相同 Cookie 合并,不同 Cookie 分别保留为账号;迁移成功后清除旧表单中的凭证。未勾选记住的凭证不会保存。账号持久化失败会提示错误,原数据保留,可重新读取后重试。保存账号只校验格式,不代表登录仍有效;Cookie 过期后在账号管理中更新一次即可。
完整观演人信息只用于当前运行,不写入日志或任务历史。通用设置统一保存在本机 tickets.settings,保存成功后才生效;旧 SQLite SETTINGS 中的代理和运行标识会补充迁入尚未保存的字段,原表保留。日志继续使用 LOG / 运行标识_LOG 表,写入使用参数绑定。开发环境与正式环境分别使用 sql-test.db 与 sql.db。
在 设置与帮助 → 界面配色 中选择预设或自定义主色,可切换浅色/深色。修改立即预览;点击 保存设置 后持久化。未保存就离开设置页时恢复已保存配色。
在 代理与订阅 中选择 订阅节点,添加名称和 HTTP(S) 订阅链接,选择要使用的订阅并保存。选中订阅会自动加载,也可点击 刷新订阅 手动更新;选择节点后再次保存。各平台页仍需勾选 使用全局代理。
微信通知在 Tickets 内直接绑定,无需安装 OpenClaw 或配置大模型:
购票任务在平台确认创建订单成功后发送一次微信通知,包含平台、活动、场次、票档和官方支付入口。通知表示订单已创建、等待支付,不代表支付成功,请及时前往官方页面处理。微信未绑定、登录失效或发送失败不会阻止购票,也不改变成功订单或触发重新下单;通知结果会显示在任务状态中,发送失败会单独弹出提示。任务启动时未启用提醒的,成功后明确显示“微信通知未发送:任务启动时未启用提醒”,可从任务卡片进入微信通知设置。发送超时可能已送达,因此不自动重复发送。
实现依据腾讯公开的 微信插件协议,由 Rust 后端通过 HTTPS 完成扫码、收取会话消息和发送通知。二维码在本地生成,登录凭证与会话令牌以未加密的明文保存在应用数据目录的 wechat/binding.json,仅由后端读写,不传入前端设置或操作日志;Unix 系统使用目录 0700、文件 0600 权限。旧版 OpenClaw 路径、账号和接收人配置需要重新扫码绑定,不能直接用于当前连接。
保持应用运行才能接收消息并发送提醒,退出应用后停止通知。绑定保留到下次启动,可在设置中解除;切换设置页面会取消尚未完成的扫码。购票与监控任务固定启动时已保存的提醒开关、Bot 账号和接收人,更改设置只对新任务生效。同一账号重新登录或收到新消息时,会使用更新后的凭证。长时间没有对话导致发送失败时,请先向 Bot 发一条消息刷新会话,登录失效则重新扫码。长期会话有效期及服务端主动发送限制仍需实际微信账号验证,测试通知成功不代表可以无限期主动推送。
监控只读取详情接口,不通过尝试下单探测库存。明确有库存或可售状态才通知;字段缺失、未知状态或目标票档暂未返回时继续等待。库存数为 0、未开售、停售、售罄、登记/候补状态不视为有票。查询失败会延迟重试,连续 5 次失败后停止并提示检查网络及登录状态。接口有缓存或不公开库存时可能无法及时检测,收到通知时票也可能已售出,最终以官方页面为准。
createV2 链路,支持有效订单编号确认和官方支付入口。