☰
如何自动化大麦抢票:用配置文件快速跑通双端抢票流程
2026/10/6 2:26:01 网站建设 项目流程

如何自动化大麦抢票:用配置文件快速跑通双端抢票流程

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

开售按钮变灰的那一瞬间,手动抢票的失败经历大概都一样。ticket-purchase 是一个大麦抢票自动化项目:Web 端用 Selenium,手机端用 Appium,把"选场次票价 → 选观演人 → 提交订单"这段操作自动跑完,你只改一份 JSON 配置。

能力总览:支持什么、不支持什么

先划清边界。该工具只覆盖大麦网内从演出详情页到订单确认页的购票动作,不含支付——订单停在"已提交",付款仍需手动完成。它提供两条独立执行路径:

Web 端(Selenium)移动端(Appium)
运行依赖最新版 Chrome,ChromeDriver 自动下载Android 模拟器或真机、Appium 3.1.0+
程序入口damai/damai.pydamai_appium/damai_app_v2.py
配置文件damai/config.json(按模板创建)damai_appium/config.jsonc(仓库自带)
登录方式浏览器扫码登录设备上的大麦 App 保持登录
适合场景无 Android 环境、便于观察调试App 端有票源、点击速度更快

上图就是脚本的操作对象:城市、场次、票价、数量都是页面上可点击的元素,脚本按配置逐项匹配后依次点击。

环境搭建与首次跑通

Web 端依赖最轻:Python 3.9+ 和最新版 Chrome 即可,macOS / Windows / Linux 都支持。移动端另外需要 Node.js 20.19.0+(或 22.12.0+/24.0.0+)、Appium 与 UiAutomator2 驱动、可用的 Android SDK。

git clone https://gitcode.com/GitHub_Trending/ti/ticket-purchase cd ticket-purchase pip install -r damai/requirements.txt # Web 端依赖 ./check_environment.sh # 移动端一键环境检查 ./start_appium.sh # 终端 1:启动 Appium 服务 ./start_ticket_grabbing.sh # 终端 2:开始抢票

Web 端则进入damai/目录执行python damai.py(脚本按相对路径读配置,目录别跑错)。注意damai/config.json仓库里没有,脚本启动时会打印模板,你按模板在damai/下放一份并填值。最小可运行版本:

{ "index_url": "https://www.damai.cn/", "login_url": "https://passport.damai.cn/login", "target_url": "https://detail.damai.cn/item.htm?id=XXXX", "users": ["你的姓名"], "city": "广州", "dates": ["2023-10-28"], "prices": ["1039"], "if_listen": true, "if_commit_order": false }

四个必填字段是index_url、login_url、target_url、users,缺任何一个脚本会直接退出。if_commit_order首次保持false,让订单停在确认页由你人工核对后再提交。

五个关键配置字段,值从哪里来

其余字段都对应详情页上的具体元素,取值不用查文档,直接看页面:

字段作用值从哪里来
target_url目标演出详情页地址,是脚本的起点打开演出详情页后复制地址栏
users观演人名单,人数即购票张数大麦账号里添加的观演人姓名,需实名一致
city多城市巡演时筛选场次详情页"城市"一栏点亮的文案,如"广州"
dates场次日期优先级列表,按顺序尝试"场次"一栏的日期,如2023-10-28
prices票价优先级列表,按顺序尝试票价按钮上的数字,如1039

标注图与上表一一对应。dates、prices都支持往数组里放多个候选格式,匹配不上就换下一个,这是模糊匹配的由来。Web 端还有两个参数值得知道:max_retries(默认 1000)控制等待预订按钮的轮询上限,fast_mode控制各环节等待时长;if_listen开启后会关注"缺货登记"入口。

一个真实场景走查:移动端深圳站

以下参数全部取自仓库里 damai_appium/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 }

准备(开售前 30 分钟):启动 Android 模拟器,装好大麦 App 并登录;运行./start_appium.sh,服务监听 4723 端口;在 App 里搜索"周深"并停留在演出详情页。

执行:运行./start_ticket_grabbing.sh并输入y确认。脚本通过server_url连上模拟器,点击12.06场次,再按price_index(从 0 起)定位到第 6 个档位"内场1199元",随后批量选中两位观演人。核心函数ultra_fast_click不等元素进入可点击状态,直接取坐标用mobile: clickGesture发一次 50ms 点击,单次点击开销因此更低。

结果:预订点击成功即跳到订单确认页,if_commit_order为true时自动提交订单,剩余动作是支付。移动端与 Web 端互不依赖,哪端跑通则用哪端,也可以按各自配置分别试。

调优与踩坑笔记

按"现象 → 原因 → 处理"排了 6 条,前 5 条是实际会报错的场景,第 6 条是参数取舍。

  1. 现象:脚本秒退并打印一份配置模板。原因:Web 端缺少damai/config.json或四个必填字段不全。处理:按模板补齐后放入damai/目录,并从该目录内启动脚本。
  2. 现象:Node version must be at least ^20.19.0。原因:Appium 3.x 对 Node 版本有硬性要求。处理:升级 Node 到 20.19.0+ 后重跑./start_appium.sh。
  3. 现象:Neither ANDROID_HOME nor ANDROID_SDK_ROOT。原因:移动端脚本读取 SDK 路径失败。处理:在 shell 配置文件里补export ANDROID_HOME和export ANDROID_SDK_ROOT两条后重新加载。
  4. 现象:检测不到设备或 Connection refused。原因:模拟器未启动,或 Appium 没在 4723 监听。处理:先adb devices确认设备在线,再curl http://127.0.0.1:4723/status确认服务存活,最后才跑抢票脚本。
  5. 现象:Web 端提示"未找到观演人"。原因:订单确认页没加载完,或姓名与账号不一致。处理:page_load_delay从 2 提到 3–5 秒,fast_mode临时改false看扫描输出;用户元素本身有 5 次、每次 0.5 秒的自动重试,仍失败就核对姓名是否有尾随空格或后缀。
  6. 调优:大麦抢票自动化的响应比预期慢。fast_mode把轮询间隔从 1 秒压到 0.3 秒并缩减各处等待,单轮流程约省 5–8 秒;移动端显式等待默认只有 2 秒,随意加长反而会错过开售时间窗。

源码导读与合规边界

  • damai/damai.py:Web 端入口,负责校验配置文件,随后交给Concert类执行完整流程;
  • damai/concert.py:Web 端核心逻辑,扫码登录、选场次票价、选观演人、提交订单的 Selenium 步骤都在这里;
  • damai_appium/damai_app_v2.py:移动端优化版,含 Appium 连接参数与快速点击、批量点击逻辑。

两端的配置读取分别在同目录的config.py里,都是一个Config类加一次文件解析,阅读成本很低。

合规边界:这个工具仅限本人购票自用,遵守大麦的用户协议,不得用于倒卖或批量代购,也不建议多开实例刷接口。仓库声明项目仅供学习研究、勿作商业用途;首次运行时把if_commit_order留在false,人工核对一次订单再交给脚本,是成本最低的保险。

收尾

该项目的价值不在保证抢中——那取决于网络和票源——而在于把"手动点一遍"改写成"一份配置加持续轮询",双端跑通后,Selenium 与 Appium 的用法也就顺带理解了。入门按 QUICK_START.md 走,参数细节查 README.md,Web 端完整行为另有 完整使用指南(PC端).md.md)。

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

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询