如何三步跑通大麦自动抢票脚本:完整配置指南
【免费下载链接】ticket-purchase大麦自动抢票,支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase
开售前几分钟,脚本已经守在演出详情页反复刷新,只等放票的那一刻,你要做的只是盯着控制台输出。ticket-purchase 是一个基于 Selenium 和 Appium 的大麦自动抢票工具,同时覆盖 Web 端(Chrome 浏览器)和移动端(Android 设备),把城市、场次、票价、观演人的选择全部参数化,适合想减少"手点错字段"出错的抢票场景。
能力清单
- 双端方案:Web 端用 Selenium 驱动 Chrome,移动端用 Appium 驱动 Android 真机或模拟器,任选其一
- 参数化选择:城市、日期、票价、观演人全部写进配置文件,无需现场手动点击
- 内置重试:抢不到就按
max_retries循环刷新页面,不是一次机会 - 配置文件驱动:改参数就是改一个 JSON 文件,不用动代码
🚀 快速跑起来:安装、配置、运行三步
第 1 步:获取代码并安装依赖
git clone https://gitcode.com/GitHub_Trending/ti/ticket-purchase cd ticket-purchase pip install -r damai/requirements.txt依赖很轻,Web 端核心就是 damai/requirements.txt 里的 selenium。
第 2 步(仅移动端需要):装好 Appium 和驱动
npm install -g appium appium driver install uiautomator2Node.js 版本要求 20.19.0+ / 22.12.0+ / 24.0.0+,Android SDK 路径要配进ANDROID_HOME。
第 3 步:改配置,然后运行
Web 端编辑 damai/config.json,执行:
cd damai python damai.py移动端编辑 damai_appium/config.jsonc,按顺序执行三个自带脚本:
./check_environment.sh # 先自检环境 ./start_appium.sh # 启动 Appium 服务(端口 4723) ./start_ticket_grabbing.sh # 开抢配置长这样,仓库里的示例文件可以直接对照改:
原理走查:脚本到底在做什么
以 Web 端为例,核心逻辑在 damai/concert.py,整个流程分五步,理解它就能看懂控制台输出的每一步:
- 登录等待:打开登录页,先检查本地 cookie;没登录就停在登录页等你手动完成,登录后自动继续
- 进入详情页:打开你配置的
target_url(演出详情页地址) - 抢票循环:反复刷新页面,检测是否出现可下单的入口;
fast_mode开启时刷新间隔只有0.3 秒,正常模式为 1 秒 - 依次选字段:按配置依次点选城市、日期、票价档位、观演人(观演人有多种定位方式做兜底)
- 提交订单:
if_commit_order为true时自动点击提交;为false时停在订单确认页,等你人工确认
移动端流程类似:Appium 接管手机上的大麦 APP,用坐标级快速点击(50ms 点击时长)代替普通点击,减少每一步的等待开销。
⚙️ 参数指南:8 个常用参数逐个说
Web 端配置对应演出页面的信息提取方式:
页面元素和配置项的对应关系如下图:
| 参数 | 作用 | 建议值 |
|---|---|---|
target_url | 演出详情页地址,决定抢哪场 | 浏览器地址栏整条复制 |
users | 观演人姓名数组 | 与账号实名认证完全一致 |
city | 演出城市,可选 | 页面显示的城市名,如"杭州" |
dates | 场次日期数组 | 如["2026-04-11"],可列多场 |
prices | 票价档位数组 | 如["680"],按优先级排序 |
if_commit_order | 是否自动提交订单 | 测试期设false,正式抢设true |
max_retries | 最大重试次数 | 默认 1000,热门场次可调大 |
fast_mode | 快速模式,缩短所有等待 | true |
移动端配置文件参数不同,核心是keyword(搜索关键词,替代target_url)、date(如"12.06")、price(如"内场1199元")、price_index(票价档位的下标,从 0 开始),完整说明见 damai_appium/config.jsonc 和 damai_appium/app.md。
进阶技巧:三个来自项目真实能力的调法
- 先干跑再实战:把
if_commit_order设为false,脚本会选完所有字段停在订单确认页。确认"选的城市、日期、票价、观演人全对"之后再改回true,避免自动提交到错误订单 - 用快速模式压低等待:
fast_mode为true时,订单页加载等待、字段选择间隔、刷新间隔全部缩短(0.3 秒 vs 1 秒);网络不稳时反而可以关掉快速模式并调大page_load_delay(订单确认页加载等待秒数),用稳定性换速度 - 多选项轮询:
dates、prices、users都是数组,可以写多个场次、多个票价档、多个观演人,脚本按顺序尝试,一张没抢到会自动换下一档
避坑指南:高频问题与解法
- 配置缺字段直接退出:脚本启动时会校验
index_url、login_url、target_url、users四个必需字段,缺了会打印模板让你补。JSON 格式错误(多个逗号、单引号)同样会拦在启动时 - 观演人选不中:名字必须与大麦账号实名认证一字不差,包括生僻字写法;选不中时关掉
fast_mode看详细日志定位 - 移动端脚本里的 SDK 路径:
start_appium.sh、start_ticket_grabbing.sh里硬编码了作者机器的/Users/shengwang/Library/Android/sdk,在自己机器上要先改成自己的 SDK 路径再运行,这是最常见的"别人能跑我不能跑" - Node.js 版本报错:提示
Node version must be at least ^20.19.0 ...时升级 Node 即可 - Appium 连不上(Connection refused):确认
./start_appium.sh还在运行、端口 4723 没被占用,可用curl http://127.0.0.1:4723/status验证 - 找不到设备:
adb devices应能看到device状态的设备,检查 USB 调试是否开启;模拟器需先启动
收尾:从文档开始
一句话总结:先把if_commit_order: false的干跑流程验证通过,再开正式抢票,这是这个项目给你的最大安全垫。后续可以按 QUICK_START.md 快速复查流程、README.md 查完整说明,问题排查工具在 damai/quick_diagnosis.py,流程图源文件在 doc/。
祝开售顺利。
【免费下载链接】ticket-purchase大麦自动抢票,支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考