手把手:15 分钟跑通大麦自动抢票工具(网页 + APP 双路线)
【免费下载链接】ticket-purchase大麦自动抢票,支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase
如果开售 10 点整票瞬间放光,而你的手速跟不上,还有一条路:让程序替你点。大麦自动抢票项目 ticket-purchase 就是干这件事的——配置好观演人、场次和票价后,它会自动刷新页面、选座选价、提交订单。下面从环境安装到跑通全流程,不需要你看一行源码。
它替你省掉哪几步
手动抢票时,开售瞬间你要连续完成一串动作;这个工具把中间的点击全部接管了:
| 你手动要做的事 | 工具替你做什么 |
|---|---|
| 开售后不停刷新演出页 | 自动轮询刷新,最多重试max_retries次(默认 1000 次) |
| 选对城市和场次日期 | 按配置里的city/date(s)自动选中 |
| 点中目标票价档 | 按price(s)/price_index自动点击 |
| 勾选观演人 | 按users列表自动全部勾选 |
| 点"提交订单" | if_commit_order为 true 时自动提交 |
你只需要做三件:登录大麦账号、填好配置文件、在开售前把脚本跑起来。
先想清楚:走网页路线还是 APP 路线
项目里两套实现并存,先按下面这张表选边,后面的安装步骤只跟所选路线走:
| 路线 | 核心依赖 | 适合谁 |
|---|---|---|
| 网页版(Selenium 驱动 Chrome) | Python + 最新版 Chrome | 电脑上就能完成购票的场次 |
| APP 版(Appium 驱动安卓) | Python + Node.js + Appium + 安卓真机/模拟器 | 票只能在 APP 里买,或追求更快路径 |
如果你在浏览器里能正常打开演出页并走完全流程,就选网页版,依赖最少、上手最快;否则(很多大麦票只支持 APP 端购买)选 APP 版,代价是多一套 Node.js 和安卓设备环境。
从零到跑起来
结论很简单:两条路线共用的只有"拉仓库 + 装 Python 依赖",其余各走各的。
| 方案 | 核心依赖 | 系统要求 |
|---|---|---|
| 网页版 | Python 3.9+、selenium 4.18.1、最新版 Chrome | Windows / macOS / Linux |
| APP 版 | 以上 + Node.js 20.19.0+、Appium 3.1.0+、uiautomator2 驱动、Android SDK | 额外需要安卓真机或模拟器 |
拉仓库
git clone https://gitcode.com/GitHub_Trending/ti/ticket-purchase cd ticket-purchase把项目克隆到本地,之后所有修改都发生在这个副本里。
装依赖(两条路线通用)
cd damai pip install -r requirements.txt网页版的依赖就一行:selenium 4.18.1,装完即可用。
多装两个组件(仅 APP 版)
npm install -g appium appium driver install uiautomator2第一条安装 Appium 服务(脚本靠它指挥安卓设备),第二条装安卓驱动;执行appium --version能打印版本号说明装好了。仓库里还带了 QUICK_START.md,里面有./check_environment.sh一键检查脚本,可以提前跑一遍看缺哪块。
只需改这几处
两个配置文件都是 JSON,网页版在damai/config.json,APP 版在damai_appium/config.jsonc,只需要动下面这些字段:
| 配置项 | 填什么 | 不填会怎样 |
|---|---|---|
users | 大麦里已注册过的观演人姓名(逐字一致) | 脚本直接报错退出 |
target_url(网页)/keyword(APP) | 演出详情页链接 / 搜索关键词 | 定位不到目标演出 |
city | 演出城市,如"广州" | 选错城市 |
dates(网页)/date(APP) | 场次日期 | 选错场次 |
prices(网页)/price+price_index(APP) | 目标票价;索引从 0 数起,0 即最低档 | 点错价格档 |
if_commit_order | true自动提交订单 | false停在确认页不提交 |
选填项保持默认即可:server_url(APP 版连 Appium 的地址,默认http://127.0.0.1:4723)、max_retries(重试次数)、if_listen。
网页版配置文件全貌长这样,照着逐项替换:
打开target_url对应页面后,每个配置项对应页面上哪个元素,下面这张标注图一看就懂:
开跑前的最后检查
🚦 逐项打勾再开跑,任何一条不满足都会让脚本白跑:
- 观演人姓名已在大麦账号里添加,且与配置文件逐字一致
- 大麦账号已登录:网页版 Chrome 里已登录 / APP 版手机里大麦 APP 已登录
- 网页版:Chrome 是最新版(ChromeDriver 会自动匹配);APP 版:
adb devices能列出设备且已开启 USB 调试 - APP 版:Node.js ≥ 20.19.0,Appium 与 uiautomator2 驱动已装好
- 网络稳定,开售时段建议用有线
- 在开售前 5~10 分钟把脚本启动,别卡点再跑
跑起来后你该看到什么
先看到什么:网页版在终端打印✓ 配置文件加载成功并弹出 Chrome 窗口;APP 版则是 Appium 服务先启动,脚本连上 4723 端口后开始操作手机。
cd damai python damai.py网页版就这两行;APP 版先起 Appium(appium --port 4723),再执行python damai_app_v2.py,细节见 damai_appium/app.md。
正常长什么样:浏览器自动打开演出详情页,快速选中城市、场次、票价档,勾选观演人,最后停在订单确认页——if_commit_order为true时会直接进支付页。开售后页面会停留 5 分钟方便你观察结果:
不正常时去哪看:先看终端打印的 traceback 第一行报错;APP 版连不上就用curl http://127.0.0.1:4723/status确认 Appium 是否存活,用adb devices确认设备是否还在。
抢不到 / 报错时的排查手册
🔧 按"现象 → 原因 → 解法"对号入座:
| 现象 | 可能原因 | 怎么解 |
|---|---|---|
Node version must be at least ^20.19.0 ... | Node.js 版本太旧 | 升级 Node 到 20.19+ / 22.12+ / 24+ |
Unable to find an active device or emulator | 设备未连接或没开 USB 调试 | 开启调试后用adb devices确认能看到设备 |
Connection refused | Appium 没启动或 4723 端口被占用 | 重启 Appium,核对server_url与实际端口一致 |
Neither ANDROID_HOME nor ANDROID_SDK_ROOT ... | 安卓环境变量没设置 | 在 shell 配置文件里 exportANDROID_HOME指向 SDK 目录 |
| Chrome 打开后无反应 / 报错 | Chrome 与 Selenium 版本不匹配 | Chrome 保持最新版,selenium 会自动匹配驱动 |
| 一直在刷新却总提示售罄、或请求被限制 | 频率过高、同时跑了多个实例 | 只保留一个实例,调低max_retries,遵守平台使用规则 |
| APP 版点错票价位置 | 新版大麦票价文本为空,price_index数错了 | 手动数一遍目标票价在票价列表里的位置,更新索引 |
边界与提醒
- 工具仅供学习与研究,请遵守大麦网服务条款,不要用于商业倒卖等用途。
- 同一时间只跑一个实例,请求频率保持在合理范围,避免对账号和平台造成过大压力。
- 建议用专门账号操作,万一账号被风控,对主账号影响更小。
【免费下载链接】ticket-purchase大麦自动抢票,支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考