Campus-iMaoTai 保姆级上手:i茅台自动预约部署与排错
【免费下载链接】campus-imaotaii茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法)项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai
先说痛点
每天 9 点整蹲着手机、掐着秒针刷新 i茅台 页面抢申购,错过一秒就得再等一天,这大概是 i茅台 玩家最折磨的时刻。Campus-iMaoTai 就是干这事的:它把「发送验证码登录、定时预约、查结果、发通知」这些重复动作全部自动化,支持同时管理多个 i茅台 账号,你只管在后台配置,到点它自己帮你提交申购。注意项目方有明确说明:它用的是已淘汰的旧协议算法,适合学习和研究,别指望它作为长期生产工具。
从零到跑通:三条命令启动
环境要求
- Linux 服务器一台(推荐,Docker 部署基于 Linux)
- Docker + docker-compose
- 内存 2GB 以上,磁盘 10GB 可用
- 服务器能访问外网(要请求 i茅台 接口)
三步启动
git clone https://gitcode.com/GitHub_Trending/ca/campus-imaotai cd campus-imaotai/doc/docker docker-compose up -ddocker-compose 里定义了 4 个服务,全部走 host 网络模式(容器直接用宿主机网络,不用做端口映射):MySQL 5.7(3306)、Redis 6.2(6379)、Nginx(80)、后端 campus-server(8160)。
验证跑起来了
浏览器打开http://服务器IP(80 端口),出现 RuoYi 风格的登录页就是成功。默认账号admin,密码admin123,登录后左侧菜单能看到「i茅台」分组下的用户管理、预约项目、门店列表、源码地址几个页面,说明前后端、数据库、Redis 全部联通。第一次启动时数据库会自动执行初始化 SQL,建好i_user、i_shop等表。
核心能力拆解
一、多账号自动预约(最核心)
这个功能替你做的事:到点自动替所有配置好的账号提交申购,你不用守在屏幕前。
开启方式分两步:
- 进入「i茅台 → 用户管理」,点「添加账号」,填入 i茅台 用户的手机号和 deviceId(设备标识,可以留空让系统随机生成),点「发送验证码」把验证码填进去,点「登录」。系统登录成功后会自动把返回的 token 存进数据库,这个 token 就是后续自动预约的身份凭证。
- 回到用户列表,给账号补全「预约项目 code」(想申购哪个商品填哪个,多个用
@分隔)。
系统的时间逻辑是这样的:每天凌晨 1:10 批量为每个用户分配预约分钟数(randomMinute字段控制是否随机,0 为随机、1 为固定),9 点期间每分钟执行一次批量任务,命中自己分钟的用户就在那一分钟发起预约。比如你把某个账号的 minute 设为 5,系统就会在 9:05 那一分钟替它提交申购,之后间隔 3 秒处理下一个账号,避免瞬时并发。
二、智能门店选择
i茅台 的申购要绑门店,这个功能替你选门店,不用自己一个个挑。每个用户有个「类型」字段:
- 类型 1:预约本市出货量最大的门店
- 类型 2:预约你位置附近的门店
门店和商品数据系统会自己维护:每天 7:10、7:55、8:10、8:55 四个时间点定时刷新版本号、商品列表和门店列表,你也可以在「门店列表」页面手动点「刷新茅台商品列表」。比如你在石家庄,类型选 2,系统就用你的经纬度找最近的门店提交申购。
三、结果推送与日志
预约结果不用你自己查。每天 18:05 系统自动查询所有账号的申购结果,查到了就写日志;如果用户在配置里填了 PushPlus 的 token(一个免费的消息推送服务的令牌),执行成功或失败都会推送到你微信。管理后台的「日志管理 → 操作日志」里也能看到每条预约记录:哪个账号、几点执行、返回了什么。
进阶配置
1. 外挂配置文件
后端容器通过环境变量spring.config.additional-location指定了外部配置路径,你可以在宿主机的/docker/server/conf/下创建application-prod.yml,不用改镜像就能覆盖配置。比如用户多了想调连接池:
spring: datasource: hikari: maximum-pool-size: 20 minimum-idle: 5默认连接池对单机小团队够用,账号多、并发请求大时再调。
2. 修改 MySQL 密码
doc/docker/docker-compose.yml里MYSQL_ROOT_PASSWORD默认是123456789,公网服务器务必改掉:
environment: MYSQL_ROOT_PASSWORD: 改成你自己的密码首次部署前改;已经跑过的改密码要同步改后端配置里的数据库密码,然后重建容器。
3. 预约分钟与随机开关
用户表里的minute是预约分钟(1-59,超范围自动回落到 5),randomMinute控制是否随机:填 0 则每天 1:10 由系统随机分配,填 1 则用你固定的值。多人一起用同一分钟容易挤在同一批请求里,建议大部分人开随机。
避坑指南
现象:docker-compose up后部分容器起不来或反复重启。十有八九是端口被占——所有服务都是 host 网络模式,80、3306、6379、8160 任何一个被别的程序占着就冲突。用netstat -tlnp | grep 8160这类命令逐个确认,把占用程序停掉再重启容器。另外/docker下的挂载目录(mysql/data、nginx/conf 等)建议先手动建好,不然首次启动可能因目录权限问题报 mount 错误。
现象:页面正常、日志显示「预约成功执行」但结果全是失败,或者根本没人被调度。先查 token 是否过期。token 是账号登录时换来的凭证,i茅台 端会定期失效,过期后接口直接拒掉,任务会静默失败。进用户列表看「到期时间」列,超时的账号重新走一遍「发送验证码 → 登录」即可刷新 token。
现象:登录都通了,但预约接口报错、版本号刷不出来。大概率是 i茅台 官方改了接口。这个项目基于 2023 年的旧协议(作者也明确写了「使用已淘汰的算法」),官方升级后旧加密参数和地址可能失效。这种情况不是你的部署问题,属于项目本身已过期,适合当 Spring Boot 定时任务、AES 签名、多用户调度的学习样本。
收尾
Campus-iMaoTai 的价值在于它把「登录换 token → 定时预约 → 查结果推送」这条完整链路用约 2000 行代码讲清楚了,Docker 三条命令就能拉起一整套可跑的环境。建议你先按本文把服务跑起来、添加一个测试账号走通登录流程,再对照campus-modular模块的 task 和 service 读一遍代码,比单纯盯着页面点击收获大得多。
【免费下载链接】campus-imaotaii茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法)项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考