大麦自动抢票工具零基础上手实录:把选城市场次到提交订单交给脚本

发布时间:2026/11/6 1:44:54
大麦自动抢票工具零基础上手实录:把选城市场次到提交订单交给脚本

大麦自动抢票工具零基础上手实录:把选城市场次到提交订单交给脚本

【免费下载链接】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)。

项目要求作用不满足会怎样
Python3.9+运行抢票脚本脚本无法启动
Node.js20.19.0+ / 22.12.0+ / 24.0.0+运行 AppiumAppium 拒绝启动
Appium3.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_urlAppium 服务地址换端口时要同步改
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),仅供参考