大麦自动抢票工具零基础上手实录:把选城市场次到提交订单交给脚本
【免费下载链接】ticket-purchase大麦自动抢票,支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase
ticket-purchase 是一个大麦自动抢票工具:用 Appium 驱动安卓手机上的大麦 App,自动完成选城市、点场次、选票档、勾观演人、提交订单这条链路,另有一套 Selenium 的 Web 端实现兜底。跑通之后,你只需把手机停在演出详情页,开售那一刻由脚本接管后续所有点击,自己不用再抢着操作。
动手前先对一遍环境需求
整条链路依赖好几层软件,先看自己能不能跑通。仓库自带一份 shell 写的自检脚本 check_environment.sh,跑一次它会逐项检查 Python、Node.js、Appium、Android SDK、ADB、设备连接和配置文件,每项给出 ✅ 或 ❌。它适配 macOS / Linux;Windows 用户可改用 damai/ 目录里的 Python 自检 check_environment.py,再配合 完整使用指南(PC端).md.md)。
| 项目 | 要求 | 作用 | 不满足会怎样 |
|---|---|---|---|
| Python | 3.9+ | 运行抢票脚本 | 脚本无法启动 |
| Node.js | 20.19.0+ / 22.12.0+ / 24.0.0+ | 运行 Appium | Appium 拒绝启动 |
| Appium | 3.1.0+ | 把指令桥接到安卓设备 | 连不上手机 |
| Android SDK | 已设 ANDROID_HOME / ANDROID_SDK_ROOT | 管理与设备的通信 | 找不到 adb、设备 |
| 设备 | USB 调试真机或已完全启动的模拟器 | 承载大麦 App | 检测不到活动设备 |
| 账号 | 大麦 App 已安装登录、观演人已登记 | 提交订单的前提 | 无法勾人、提交 |
环境补齐后再进实机环节,否则后两步都会报路径或连接错误。
完整走一遍真实流程
第一步永远是自检。克隆后先跑一次:
git clone https://gitcode.com/GitHub_Trending/ti/ticket-purchase cd ticket-purchase ./check_environment.sh首跑大概率有红项。最常见的两个:Appium 没装,执行npm install -g appium后再appium driver install uiautomator2;Python 依赖没装,执行pip install -r damai/requirements.txt。
接着开两个终端分工。第一个终端执行./start_appium.sh:它先核对设备已连接、大麦 App(包名 cn.damai)已安装,然后拉起 4723 端口的 Appium 服务。这个终端全程保持开着,关掉它脚本就失去连接。
切到手机:打开大麦 App,搜出目标演出,停在详情页。脚本就从这一页接手,搜索环节不用你管。未开售时底部按钮是"预约",开售后变"立即购买",两种文案都做了识别,停在详情页等就行。
第二个终端执行./start_ticket_grabbing.sh:它先确认 Appium 服务存活、config.jsonc 存在,再回显当前配置供你核对,输入 y 进入抢票循环——选城市 → 点购买按钮 → 选票档 → 设数量 → 确定购买 → 勾观演人 → 提交订单。整个流程最多尝试 3 次,两次之间隔 2 秒并重新初始化驱动,单次卡顿不会直接放弃。
把三个字段和界面对上
移动端行为全部由 config.jsonc 驱动,仓库当前默认值:
{ "server_url": "http://127.0.0.1:4723", "keyword": "周深", "users": ["王胜", "潘鸿运"], "city": "深圳", "date": "12.06", "price": "内场1199元", "price_index": 5, "if_commit_order": true }详情页上的城市、场次、票档三行,与 city、date、price 三组字段一一对应,这张标注图把映射关系标得很清楚:
| 字段 | 含义 | 易错点 |
|---|---|---|
| server_url | Appium 服务地址 | 换端口时要同步改 |
| keyword | 演出搜索关键词 | 填歌手 / 巡演名 |
| users | 观演人姓名数组 | 须与账号登记逐字一致 |
| city | 城市站 | 支持模糊匹配 |
| date | 场次日期 | 形如 12.06 |
| price | 票档文字描述 | 仅供人眼核对,不参与点击 |
| price_index | 票档索引 | 从 0 计数,5 即第 6 个 |
| if_commit_order | 是否自动提交订单 | 首次运行建议置 false 空跑 |
两个反直觉的细节值得展开。其一,新版大麦 App 的票档文本是空串,按文字找按钮已经失效,所以脚本改按票档区第几个可点位置来选,price_index 才是真正瞄准的目标,price 只负责让你核对档位没选错。其二,城市匹配走三级策略:先精确匹配,再包含匹配,最后 XPath 兜底,所以城市名不必写全。
出问题了按这里查
自检提示 Node 版本不兼容— 现象:Appium 拒绝启动,要求 Node 至少 20.19.0 / 22.12.0 / 24.0.0。原因:本地 Node 过旧。修复:升级 Node 后重跑自检。
报 Neither ANDROID_HOME nor ANDROID_SDK_ROOT— 现象:脚本找不到 SDK。原因:环境变量未设置。修复:把 ANDROID_HOME 与 ANDROID_SDK_ROOT 指向你的 SDK 目录,并写进 ~/.bashrc 或 ~/.zshrc。
提示找不到活动设备— 现象:Appium 拿不到设备。原因:设备实际处于离线态。修复:跑一次adb devices,序列号后应为device;若是offline,真机查 USB 调试开关,模拟器确认是否完全启动。
连接被拒绝(Connection refused)— 现象:抢票脚本连不上 Appium。原因:第一个终端的服务已停或端口被占。修复:确认 start_appium.sh 没关,再用curl http://127.0.0.1:4723/status验证端口。
选中的票档不对— 现象:点到了不想要的档位。原因:索引从 0 计数且页面档位顺序可能变化。修复:在详情页票档区从上往下重数,把 price_index 对齐后再开跑。
开抢前逐项勾选
- 环境自检全绿,两个启动脚本里的示例路径已改成本地的
- 配置已改为目标演出,置 false 时已空跑到提交页
- 观演人姓名与账号登记逐字一致
- Appium 终端保持打开,status 接口能正常响应
- 手机停在演出详情页,账号已登录,网络稳定
- 确认开售时间,开抢前才把 if_commit_order 改为 true
现在打开终端,把配置改成你下一场想抢的演出,让脚本在开售那一刻接管吧——请遵守大麦网使用条款,合理使用本工具,尊重其他购票者的权益。
【免费下载链接】ticket-purchase大麦自动抢票,支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考