
如何自动化大麦抢票用配置文件快速跑通双端抢票流程【免费下载链接】ticket-purchase大麦自动抢票支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase开售按钮变灰的那一瞬间手动抢票的失败经历大概都一样。ticket-purchase 是一个大麦抢票自动化项目Web 端用 Selenium手机端用 Appium把选场次票价 → 选观演人 → 提交订单这段操作自动跑完你只改一份 JSON 配置。能力总览支持什么、不支持什么先划清边界。该工具只覆盖大麦网内从演出详情页到订单确认页的购票动作不含支付——订单停在已提交付款仍需手动完成。它提供两条独立执行路径Web 端Selenium移动端Appium运行依赖最新版 ChromeChromeDriver 自动下载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?idXXXX, 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-28prices票价优先级列表按顺序尝试票价按钮上的数字如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 条是参数取舍。现象脚本秒退并打印一份配置模板。原因Web 端缺少damai/config.json或四个必填字段不全。处理按模板补齐后放入damai/目录并从该目录内启动脚本。现象Node version must be at least ^20.19.0。原因Appium 3.x 对 Node 版本有硬性要求。处理升级 Node 到 20.19.0 后重跑./start_appium.sh。现象Neither ANDROID_HOME nor ANDROID_SDK_ROOT。原因移动端脚本读取 SDK 路径失败。处理在 shell 配置文件里补export ANDROID_HOME和export ANDROID_SDK_ROOT两条后重新加载。现象检测不到设备或 Connection refused。原因模拟器未启动或 Appium 没在 4723 监听。处理先adb devices确认设备在线再curl http://127.0.0.1:4723/status确认服务存活最后才跑抢票脚本。现象Web 端提示未找到观演人。原因订单确认页没加载完或姓名与账号不一致。处理page_load_delay从 2 提到 3–5 秒fast_mode临时改false看扫描输出用户元素本身有 5 次、每次 0.5 秒的自动重试仍失败就核对姓名是否有尾随空格或后缀。调优大麦抢票自动化的响应比预期慢。fast_mode把轮询间隔从 1 秒压到 0.3 秒并缩减各处等待单轮流程约省 5–8 秒移动端显式等待默认只有 2 秒随意加长反而会错过开售时间窗。源码导读与合规边界damai/damai.pyWeb 端入口负责校验配置文件随后交给Concert类执行完整流程damai/concert.pyWeb 端核心逻辑扫码登录、选场次票价、选观演人、提交订单的 Selenium 步骤都在这里damai_appium/damai_app_v2.py移动端优化版含 Appium 连接参数与快速点击、批量点击逻辑。两端的配置读取分别在同目录的config.py里都是一个Config类加一次文件解析阅读成本很低。合规边界这个工具仅限本人购票自用遵守大麦的用户协议不得用于倒卖或批量代购也不建议多开实例刷接口。仓库声明项目仅供学习研究、勿作商业用途首次运行时把if_commit_order留在false人工核对一次订单再交给脚本是成本最低的保险。收尾该项目的价值不在保证抢中——那取决于网络和票源——而在于把手动点一遍改写成一份配置加持续轮询双端跑通后Selenium 与 Appium 的用法也就顺带理解了。入门按 QUICK_START.md 走参数细节查 README.mdWeb 端完整行为另有 完整使用指南(PC端).md.md)。【免费下载链接】ticket-purchase大麦自动抢票支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考