3步用 Docker 拉起 i茅台多账号自动预约
【免费下载链接】campus-imaotaii茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法)项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai
campus-imaotai是一个 Java + Vue 编写的 i茅台多账号自动预约工具:在管理后台录入账号后,系统定时刷新门店与商品数据、9 点整批量申购、18:05 查结果并用 pushplus 推送,整个环境用 docker compose 一条命令拉起。README 里有一句关键声明要留意:本项目不提供成品,使用的是已淘汰的算法——适合想读懂它整套调度结构、再按新接口改造的人,不适合拿来"直接躺赢"。
🐳 一条命令拉起四件套
克隆仓库之后,部署其实就三行:
git clone https://gitcode.com/GitHub_Trending/ca/campus-imaotai cd campus-imaotai/doc/docker docker-compose up -ddocker-compose 配置 会同时起四个容器,全部用network_mode: host,不需要再做端口映射:
| 服务 | 镜像版本 | 端口 | 职责 |
|---|---|---|---|
| mysql | 5.7 | 3306 | 存 i_user、i_shop、i_item、i_log |
| redis | 6.2.12 | 6379 | 缓存门店列表、session、省市库存 |
| nginx | 1.23.4 | 80 | 管理后台前端页面 |
| campus-server | 1.0.13 | 8160 | 后端接口 + 全部定时任务 |
数据库campus_imaotai自动创建,表结构来自仓库自带的初始化 SQL。起来之后浏览器打开 8160,用初始脚本里的 admin 账号登录即可。
进后台第一件事:手机号加验证码录入账号
多账号管理的核心是i_user表,主键就是手机号,一行对应一个 i茅台账号。
在「用户管理」里点"添加账号",填手机号后会向 i茅台 app 发验证码,校验通过后端调平台登录接口,把返回的 token、cookie、deviceId 落库。之后预约、领奖励这些动作都由服务端代发,不用再守着手机 app。token 过期时,回到列表点"登录"重新走一遍验证码流程就行。旁边还有"直接新增":如果你已经手动抓好了 token,可以跳过验证码直接填字段入库。
两个开关:shop_type 与 random_minute
第一次 9 点窗口跑起来之前,真正值得配的就两个字段:
- shop_type:1 表示选本市出货量(inventory)最大的门店,本市没有投放就回退到按经纬度算的省内最近门店,距离用
IShopServiceImpl里的球面公式算;2 表示直接选你所在经纬度最近的省内门店。省、市维度的库存数据会缓存进 Redis,60 分钟过期。 - random_minute:0 表示随机分钟,1 表示固定分钟。开启随机后,每天 01:10 系统会批量重算每个账号的
minute字段,取值 1~50,等于把各账号的申购时刻打散在 09:01 到 09:50 之间,避免所有账号同一秒打出去。
「门店列表」菜单能看到商品 ID、省市、完整地址、经纬度,方便你人工核对目标城市当天有哪些店可约,也可以在页面上手动刷新茅台商品列表。
🕘 从早 7 点到晚 6 点后台在跑什么
完整排期在 CampusIMTTask 里,几个关键时间点记一下:
| 时间 | 任务 |
|---|---|
| 01:10 | 为每个账号重算当天随机分钟 |
| 07:10、07:55、08:10、08:55 | 刷新版本号、商品列表、门店列表 |
| 09:00~09:59 | 每分钟跑一次,执行 minute 匹配的账号批量预约 |
| 11:00~11:59 | 每分钟跑一次,批量领旅行奖励 |
| 18:05 | 查询申购结果,落日志 |
每个账号之间间隔 3 秒,同一账号多个商品之间还有 3~5 秒随机延迟,都是为了让请求别太集中。每笔预约完成后还会等 10 秒再去领申购耐力值,全过程和返回结果都写进i_log。
晚 6 点以后:看结果、翻日志
18:05 的结果任务会逐账号调平台预约列表接口,状态为 2 且预约时间在 24 小时内的记为申购成功;如果你给账号配了 pushplus 的 token(push_plus_token字段),结果会直接推到手机,不用守着后台。
不看推送的话,「操作日志」里有全部记录,每条标着"预约成功/失败",点"详情"能看到接口返回原文,排查时基本从这里入手:
跑挂了先查三件事:早上 7~8 点的刷新任务有没有报错(门店表空了 9 点必然失败)、账号minute和实际执行时间是否对得上、i_log里 status=1 的报错文案;如果账号到了expire_time,回用户管理重新登录一次 token。把这套定时任务、Redis 缓存和日志链路摸清之后,下一步就是对着新接口的变化去改IMTServiceImpl里的请求参数,仓库的价值就在这个可以直接读、直接改的结构上。
【免费下载链接】campus-imaotaii茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法)项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考