大麦抢票脚本快速上手:从环境搭建到票档配置的完整教程

大麦抢票脚本快速上手:从环境搭建到票档配置的完整教程

【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 【免费下载链接】ticket-purchase 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase

订单页最后一行写着「已售罄」。晚 8 点整,你的手指早就摁在按钮上,票档却在弹窗出来之前变灰了。ticket-purchase 是一套大麦自动抢票工具:两套脚本分别驱动 Chrome 浏览器与 Android 真机,替你把搜演出、选城市场次、选票档、勾观演人、提交订单整条链路自动走完,你只需要把演出信息写进配置文件。这份自动抢票教程带你把一次不提交订单的完整试跑走通。抢票拼的从来不是手指速度,而是「除了按下按钮以外的事,你是否全都做完了」。

它是怎么工作的:抢票脚本在页面上干了什么

脚本的全部动作都发生在同一个页面——大麦演出详情页,并遵循「五步固定链路」:登录检查 → 加载演出信息 → 检测售卖状态 → 选票档 → 提交订单。城市按钮、场次按钮、票档按钮数组都在这一个页面上,脚本点的就是这三类元素,不多管别的。

两条路线各自独立,互不依赖:

  • Web 端(damai/):Selenium 驱动 Chrome,入口是 damai/damai.py;
  • 移动端(damai_appium/):Appium 驱动 Android 真机或模拟器,入口是 damai_appium/damai_app_v2.py。Appium 可以理解为「远程替你操作手机」的服务,脚本连上它之后,点击和滑动由它在手机上执行;uiautomator2 是它跑 Android 所必需的驱动。

两条路线共用两处设计:城市、日期、票档全部走模糊匹配,页面文案变一两个字,流程不至于垮掉;内置循环重试,偶发一次点空不会把整条链路带崩(移动端默认重试 3 轮)。

大麦自动抢票目标演出详情页与票档选择区域

大麦抢票环境搭建:首次运行前的依赖清单

这一步只做一次,换机器才需要重来。大麦抢票环境搭建的完整清单共 5 项:

  1. Python 3.9+,依赖用 pip install -r requirements.txt 或 poetry install 装好;
  2. Node.js 20.19.0+,这是 Appium 的运行底座;
  3. Appium 3.1.0+ 全局安装(npm install -g appium),并用 appium driver install uiautomator2 装好驱动;
  4. 一台开启 USB 调试的真机,或已完全启动的模拟器,大麦 APP 已安装并登录;
  5. ANDROID_HOME 环境变量配好,adb devices 能看到设备。

只跑 Web 端的话,第 2~5 项可以整体跳过。

🔍 全部就位后跑一次自检:

./check_environment.sh

它会逐项核对 Python、Node、Appium、ADB 与设备状态,缺哪样就列出哪样。补齐后再跑一遍,清单里不再出现 ❌,就可以进入下一步。

抢票配置文件详解:8 个字段怎么填

damai_appium/config.jsonc 里 8 个字段,决定脚本最终点哪个城市、哪个场次、哪档票。ticket-purchase 的思路是「配置驱动」:换一场演出只改几个字段,代码一行不动。移动端配置示例如下,首跑务必把 if_commit_order 留在 false——脚本选中票档后会先停下,人工确认无误再翻成 true 放开自动提交:

📄

{
  "server_url": "http://127.0.0.1:4723",
  "keyword": "周深",
  "users": ["姓名1", "姓名2"],
  "city": "深圳", "date": "12.06",
  "price": "内场1199元", "price_index": 5,
  "if_commit_order": false
}
字段作用怎么填
server_url脚本连接 Appium 的服务地址保持默认,仅当 4723 端口被占用时改
keyword搜索词,用于定位演出填歌手名或演出全名
users观演人名单与账号实名信息逐字一致,可写多人
city演出城市写简称即可,走模糊命中
date目标场次日期与页面场次完全对齐,防误中相邻场
price目标票档完整文案或纯数字均可
price_index票档在按钮数组中的位置从 0 数起;文案含糊时按序号锁定
if_commit_order是否自动提交订单首跑必须 false,试跑确认后再开 true

Web 端是另一条并行线:damai/config.json 字段大体相同,多一个 target_url——把浏览器地址栏里目标演出详情页的完整 URL 粘进去,脚本会直接开到那个页面。跑法是 cd damai && python damai.py。两条路线互不依赖,可以并行准备,先跑通哪端就先上哪端。

大麦抢票 Web 端 config.json 字段示例

从克隆到进场:三行命令走完全程

环境和配置就绪后,从拿代码到启动脚本只需 3 行命令。

🎫

git clone https://gitcode.com/GitHub_Trending/ti/ticket-purchase
cd ticket-purchase
./start_appium.sh        # 仅移动端需要,监听 4723 端口
./start_ticket_grabbing.sh

第二条只服务 Appium 抢票路线,Web 端不用跑;它会先核对 Node、Appium、设备与大麦 APP,通过后前台挂起 appium --port 4723,这个终端要一直留着,Ctrl+C 才能停。

第三条不会立刻动手:它先核对 Appium 服务状态与配置文件,回显当前配置,等你敲一个字符(y)才真正开始执行。按下之前,对照下图把配置值与页面再核对一遍:

大麦抢票配置文件取值与详情页元素对照

移动端还有一个前提:大麦 APP 已打开、目标演出已搜出、页面停在详情页——脚本一启动就直接从选票档开始走。首次试跑的目标不是买到票,而是确认脚本能稳定走到正确的票档。

抢票策略:演唱会、话剧、体育赛事各一套打法

同一个抢票脚本,三类演出的页面脾气不同,策略要分开调。

演唱会

  • users 里把会用到的观演人一次写全,开售时不用临时改
  • 主档位用 price 锁定,再给 price_index 当「票档双保险」
  • 开售前十分钟,手机应已停在详情页,不再切换 APP
  • 订单页肉眼确认无误后,才把 if_commit_order 翻成 true

话剧 / 音乐剧

  • 场次多、页面重,脚本默认 2 秒显式等待是下限,不要调得更小
  • date 对准目标那一场,防止误中同价位的相邻场次
  • 票档文案不全时,改用 price_index 按序号定位
  • 每场开售前,先手动完整走一遍流程热身

体育赛事

  • 同城多场,city 必填,缺了它城市按钮第一步就点错
  • 看台分区名称与页面文案逐字核对
  • 页面变动大的场次,price 只写数字
  • 无线网络不稳就换有线连接

抢不到票先查这 4 处

抢票失败排查大多数落在下面 4 项,按顺序核对,少走弯路。

现象原因处理
Appium 报 Connection refused服务没起,或 server_url 对不上重跑 ./start_appium.sh,核对配置地址是否为 http://127.0.0.1:4723
adb devices 看不到设备USB 调试没开,或模拟器没启动完开启调试后重新连接;等模拟器完全启动再查
Appium 报 Node 版本不兼容Node 低于 20.19.0升级到 20.19.0+,再跑 ./check_environment.sh 复核
脚本报「超时未找到用户」姓名与页面文案不一致,或页面没加载完逐字核对姓名,把等待时间加大再试

⚠️ 首跑保持 if_commit_order 为 false,确认能稳定选中正确票档后再翻成 true。正式开售前,用非开售状态完整演练一轮,逐个环节核对。本工具仅供个人学习研究使用,请合理使用并遵守大麦平台规则。

【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 【免费下载链接】ticket-purchase 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值