
i茅台自动预约campus-imaotai 定时预约与 Docker 一键部署完整指南【免费下载链接】campus-imaotaii茅台app自动预约每日自动预约支持docker一键部署本项目不提供成品使用的是已淘汰的算法项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotaicampus-imaotai 是一个基于 Spring Boot 与 Vue 的 i茅台自动预约系统它把每天 9 点准时抢购这件重复劳动交给定时任务执行并提供 Web 后台管理用户、门店与日志。阅读本文你可以在一台普通服务器上完成部署并跑通一次完整的预约流程。 项目定位与适用人群它是什么适合谁campus-imaotai 的核心是一个后台定时任务系统外加一套管理后台。后端基于 Java 的 Spring 调度框架按固定时间表自动执行数据刷新、批量预约、领取奖励和结果查询前端基于 Vue 的管理界面负责录入账号、维护商品与门店、查看执行日志。整个应用镜像化后配合 Docker Compose 一次拉起 MySQL、Redis、Nginx 和后端服务。它比较适合两类人一是有一定 Linux 和 Docker 基础、想自己搭建一套定时抢购工具的个人用户二是想研究定时任务 批量账号 消息推送这类通用架构的开发者项目分层清晰业务模块campus-modular与基础框架campus-framework、campus-common解耦便于阅读和改造。它不适合两类人。第一类是希望部署后保证抢中的用户作者明确声明本项目使用已淘汰的算法不提供成品预约结果受官方接口变动和竞争环境影响请将其视为学习与研究项目。第二类是完全没有命令行操作经验的用户因为首次使用需要导入 SQL、抓取并填写 i茅台的登录凭证token、cookie这些步骤无法通过图形界面绕过。 环境准备与部署最简部署命令硬件方面内存 2GB 起步建议 4GB20GB 可用磁盘稳定的外网连接即可对 CPU 没有特殊要求。软件方面只有三件事安装 Docker 与 Docker Compose服务器能访问外网拉取 mysql、redis、nginx 镜像一台运行 i茅台 APP 的手机用于获取账号凭证。克隆仓库并启动全部服务git clone https://gitcode.com/GitHub_Trending/ca/campus-imaotai cd campus-imaotai/doc/docker docker-compose up -d启动后建议做两项验证。第一查看容器状态四个服务应均为 Updocker-compose ps第二确认后端接口已就绪Nginx 将 80 端口反代到应用 8160 端口见 Nginx 配置curl -I http://localhost:8160数据库初始化脚本在 doc/sql/campus_imaotai-1.0.5.sql需要导入 docker-compose 中创建的 campus_imaotai 库方法见下一节。注意 docker-compose.yml 使用 host 网络模式并挂载了 /docker 下的固定目录若你的挂载路径不同需先调整后再启动。 首次使用从登录到跑通一次预约第一步初始化数据库。用 root默认密码 123456789进入 MySQL创建并导入表结构docker exec -i mysql mysql -uroot -p123456789 doc/sql/campus_imaotai-1.0.5.sql第二步登录管理后台。浏览器访问http://服务器IP即 Nginx 的 80 端口使用 SQL 内置的管理员账号admin登录登录页会要求输入图形验证码。第三步录入预约账号。进入茅台管理 → 用户管理添加一个 i茅台账号需要填写的字段与含义如下手机号作为账号唯一标识、用户ID、token、cookie、设备ID后三项从 i茅台 APP 的登录接口响应中抓取项目文档有说明预约执行分钟9 点第几分钟执行取值 1-59随机时间开关打开后该账号在 9 点窗口内被分配一个随机分钟避免所有账号同刻请求门店类型1 为本市出货量最大的门店2 为位置附近门店商品预约 code多个商品用 间隔。第四步触发核心功能。预约无需手动点击——9 点的批量预约由系统自动执行。你唯一要做的是确认当天配置无误然后在 9 点之后到日志页面查看该账号的执行记录成功、异常状态均有标记若配置了 PushPlus 推送 token结果也会推送到微信。第五步查看结果。每天 18:05 系统自动拉取申购结果日志页会更新当天各账号的最终状态门店维度可在门店管理中按省份、城市、商品筛选核对。⚙️ 关键机制说明调度表与批量并发是怎么跑的它做什么保证每天在正确的时间点对每个账号自动执行正确的动作。如何工作全部时间表集中在 CampusIMTTask 中由 Spring 的 Scheduled 驱动凌晨 1:10 批量重算各账号的随机预约分钟7:10、7:55、8:10、8:55 四个时间点刷新商品版本号和门店列表保证 9 点时9 点用的是最新数据9 点期间每分钟轮询执行一次批量预约11 点期间每分钟领取一次旅行奖励18:05 拉取申购结果。每个任务都标记 Async即在独立线程池执行不互相阻塞。对你意味着什么你不需要也不应该手动启动预约要调整预约时间只能通过修改账号的分钟字段同时意味着服务器时钟必须准确——所有 cron 依赖宿主机系统时间时间偏差会直接导致错过窗口。它做什么第二机制多账号互不干扰地并发预约。如何工作账号以数据库记录为单位批量任务逐个账号读取配置、独立发起请求单个账号 token 失效或请求失败不影响其余账号执行。对你意味着什么添加账号即扩容无需重启出问题时可先在日志页按账号定位再单独修复该账号的凭证。⚙️ 影响结果的配置项参数作用建议值minute预约执行分钟决定 9 点后第几分钟发起预约取值 1-595与官方放量节奏常见说法保持一致randomMinute随机时间0 为不随机、1 为在 9 点窗口内随机分配分钟用于打散多账号请求多账号时建议开启shopType门店类型1 选本市出货量最大的门店2 选位置附近门店按取酒便利性二选一itemCode商品 code指定要预约的商品多个商品用 间隔填实际商品编码pushPlusToken推送 token预约结果通过 PushPlus 推送到微信需要消息提醒时必填账号凭证的有效期由 expireTime 标记过期后预约必然失败需要重新抓取见下方常见问题。️ 常见问题排查现象docker-compose up -d报端口占用或 Nginx 启动失败。原因compose 文件采用 host 网络模式容器直接占用宿主机的 3306、6379、80 端口本机已有服务时会产生冲突。解决停掉宿主机的对应服务或修改 compose 中相应服务的 network_mode 与端口后重启容器。现象后端能启动但页面接口全部 500 或数据库连接报错。原因未导入初始化 SQLcampus_imaotai 库缺少表结构。解决执行上一节的导入命令确认i_user、i_shop、i_item、i_log等表存在后刷新页面。现象日志页显示预约异常或所有请求返回未登录。原因账号的 token/cookie 已过期凭证有效期约 30 天见 expireTime 字段。解决重新登录 i茅台 APP从接口响应中抓取新的 token、cookie 和设备 ID更新到对应用户记录。现象9 点任务照常执行但完全没有预约记录产生。原因服务器时间与标准时间偏差较大任务窗口与官方放量时间错开。解决同步宿主机系统时间如ntpdate或 chrony并确认容器内 TZ 为 Asia/Shanghai。现象预约结束没有收到微信推送。原因账号未填写 pushPlusToken或该 token 已失效。解决在用户管理中补填有效的 PushPlus token 后重新观察次日结果。现象门店列表为空或筛选不到目标城市。原因7 点的数据刷新任务未成功执行依赖接口可用性与网络。解决查看日志中刷新数据相关记录网络恢复后任务会在下一个刷新点7:10/7:55/8:10/8:55自动补齐无需手动干预。结语campus-imaotai 的价值在于把 i茅台每日预约拆成了调度表、账号池、日志审计、结果推送四个可维护的部件部署与阅读门槛都不高。更多字段说明和演示视频可参考项目 README 中列出的官方文档遇到 BUG 或有改进想法欢迎通过 Pull Request 提交到 master 分支参与贡献。【免费下载链接】campus-imaotaii茅台app自动预约每日自动预约支持docker一键部署本项目不提供成品使用的是已淘汰的算法项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考