大麦抢票自动化:如何让脚本在开售瞬间替你点下购买

📅 2026/8/24 10:54:17
大麦抢票自动化:如何让脚本在开售瞬间替你点下购买
大麦抢票自动化如何让脚本在开售瞬间替你点下购买【免费下载链接】ticket-purchase大麦自动抢票支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase上一次开售页面灰了又白白了一秒就弹出已售罄——你点下去的那一下永远慢半拍。ticket-purchase 这个开源项目做的事很直接把登录、选场次、点票档、提交订单整条链路写成 Python 脚本让大麦抢票从手速比拼变成定时触发Web 端和 Android 端都有现成实现你只需要填一份配置文件。原理速览两条链路同一套思路项目的思路不是去破解接口而是老老实实地模拟人在界面上的操作只是把每一步的反应时间压到了极限。Web 端基于 Selenium 驱动 Chrome主逻辑在 damai/damai.py 和 damai/concert.py先检查登录态没登录就打开扫码页进入目标演出的详情页后开始轮询购买按钮按钮亮起就依次完成选观演人、选票档、提交订单。它额外开了一个监听开关if_listen让页面持续挂着等放票。移动端基于 Appium UiAutomator2 驱动 Android 设备主逻辑在 damai_appium/damai_app_v2.py。V2 版本针对大麦 APP 的实际情况做了两处关键处理一是新版 APP 里票档按钮的文本是空串传统的按文字找元素会失效所以改为按票价列表里的索引定位这也是配置里price_index字段存在的理由二是等待和点击全部换了更快的实现——WebDriverWait替代隐式等待点击走原生的mobile: clickGesture并只停留 50 毫秒省掉模拟手势的开销。↑ 整条抢票链路脚本持续监听按钮状态一旦可购买就串起后续所有步骤两个端共用同一套设计哲学把开售前所有能预先完成的事都提前做掉开售那一刻只做点击。从零跑起来环境、配置与启动一条路走完3分钟装好基础环境先把仓库拉到本地跑一遍项目自带的环境自检再装 Python 依赖git clone https://gitcode.com/GitHub_Trending/ti/ticket-purchase cd ticket-purchase ./check_environment.sh # 检查 Python / Node 版本与路径 poetry install # 或 pip install -r requirements.txtPython 要求 3.9走移动端还需要 Node.js 20.19.0或 22.12.0 / 24.0.0。移动端再加一层Appium 与 Android SDK只有想做 APP 端抢票时才需要这一步npm install -g appium appium driver install uiautomator2 export ANDROID_HOME/你的/android/sdk路径 export ANDROID_SDK_ROOT/你的/android/sdk路径 adb devices # 能列出设备即连通启动设备模拟器或开了 USB 调试的真机装好大麦 APP 并登录账号。配置文件的每个字段怎么填移动端编辑damai_appium/config.jsonc{ server_url: http://127.0.0.1:4723, keyword: 刘若英, users: [观演人1, 观演人2], city: 泉州, date: 10.04, price: 799元, price_index: 1, if_commit_order: true }↑ 一份完整的移动端配置除了server_url其余字段都要和页面上看到的一字不差填之前先在 APP 里进一次目标演出的详情页对着页面抄keyword搜索框里输入的词脚本靠它找到演出条目users观演人姓名列表必须提前在 APP我的-观演人里添加过city/date对应场次选择区里的城市和月.日注意日期格式是10.04这种带点的写法priceprice_index票档文字和它在票价列表中的序号从 0 数两个一起决定最终点哪一格if_commit_order先设为false演练确认链路通了再改true↑ 左为配置字段右为页面对应位置照图抄不会错Web 端则要在damai/下自建一份config.json脚本检测到缺失时会打印出字段模板核心是target_url演出详情页完整链接、users、dates、prices都是列表可写多个候选场次和票档外加if_listen、if_commit_order、max_retries默认 1000 次重试。开售前的三个动作一切就绪后按这个顺序操作启动 Appium./start_appium.sh它会自动检查 Node 版本、设备连接和 APP 安装情况在设备上的大麦 APP 里搜索目标演出并停在详情页——脚本不会替你完成这两步执行./start_ticket_grabbing.sh确认提示无误后开始抢票Web 端同理改完配置后cd damai python damai.py即可。把成功率往上抬的几个做法环境通了只是及格线剩下的差距来自这几处多设备并行。每个设备跑一个独立 Appium 实例不同端口加一份独立配置成功率大致随设备数线性上涨。用真机注意每台机器各自的账号和登录态。把等待时间再挤一挤。V2 已经做了一轮优化禁用窗口动画、截图帧率降到 1、ADB 超时放大到 20 秒以避免误判断连Web 端还可以调damai/config.json里的fast_mode和page_load_delay——前者减少脚本自身的等待与输出开销后者控制订单确认页的加载等待。改完务必先跑一次演练验证没把必要的等待也省掉。保持监听而不是定时开火。if_listen打开后脚本会持续挂在详情页轮询比掐点启动更抗开售时间抖动再配合max_retries的默认 1000 次重试网络抖动或瞬时元素找不到不会让整轮流程中断。提前 30 分钟进入状态。开售前半小时把所有服务拉起来确认设备时钟和服务器一致脚本处于待命而不是待安装。容易卡住的四个位置启动 Appium 时报 Node 版本错误Error: Node version must be at least ^20.19.0...说明 Node 太旧升级后重试这是最常见的第一个坑。报Neither ANDROID_HOME nor ANDROID_SDK_ROOT环境变量没写进当前 shell。写进~/.bashrc或~/.zshrc再source一次别只在单次终端里 export。adb devices是空的真机检查 USB 调试和数据传输权限模拟器确认 AVD 真的启动完成了adb shell getprop sys.boot_completed返回 1。脚本连不上 4723先curl http://127.0.0.1:4723/status看服务活没活端口被占用就换端口并同步修改server_url。另外一句丑话说在前面这套工具只建议在自己账号、个人合理观演的范围内使用遵守大麦的使用条款主力账号风险高可以准备一个专门账号来跑。开售之前先做一次完整演练别等到开售当天才见第一面。找个非热门场次把if_commit_order设成false完整走一遍环境检查、启动 Appium、进详情页、跑脚本确认它能稳定走到选完票档那一步再停下。这一轮演练通常能暴露 90% 的配置错误——索引数错、日期格式写错、观演人没添加全都比开售时的弹框便宜得多。链路验证通过后再换成真实目标if_commit_order改回true提前半小时进入待命。剩下的事交给脚本。【免费下载链接】ticket-purchase大麦自动抢票支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考