Python自动抢大麦票:10分钟跑通一场演唱会的完整实战

发布时间:2026/9/24 16:28:21
Python自动抢大麦票:10分钟跑通一场演唱会的完整实战 Python自动抢大麦票10分钟跑通一场演唱会的完整实战【免费下载链接】ticket-purchase大麦自动抢票支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase开售倒数那几秒票档已经变灰你的手速永远慢半拍。开源项目 ticket-purchase 专门做大麦自动抢票把演出、观演人、城市、日期、票价档填进一个配置文件它替你自动登录、选场次、选票档、提交订单Web 与移动端双端可选。项目定位这是个什么工具适合谁聊自动抢票绕不开它的痛点人反应下限约 200 毫秒紧张时容易点错网络再快也架不住页面秒空更别说同时盯两场演出。这个项目就是冲着这些问题来的一个 Python 写的大麦抢票工具内置两套引擎——Web 端用 Selenium 驱动 Chrome移动端用 Appium 驱动 Android 真机或模拟器。你只需要会改 JSON 配置不需要懂底层自动化。适合谁有大麦账号、想替代手动点击、愿意提前把环境搭好的人。核心特性双端抢票damai/是 PC 端damai_appium/是移动端各自独立配置与入口策略即配置城市、场次、票价档、观演人全部写在 JSON 里不动代码模糊匹配 自动重试日期、价格支持多种写法元素没找到时按固定间隔自动重扫快速模式默认开启压缩各环节等待时间两档提交开关可以停在订单确认页人工把关也可以直接提交工作原理一次抢票到底怎么跑先搞懂流程后面报错才不慌。以 PC 端为例整个过程分四步 ⚡登录脚本先检查 Chrome 和 ChromeDriver 环境再打开大麦首页。首次运行要求扫码登录并把 Cookie 存成damai_cookies.pkl之后每次启动直接复用不用重复扫码。选择跳转到target_url详情页依次选城市、场次日期、票价、数量数量默认等于users里的人数。轮询选完开始轮询立即预订按钮轮多少轮由max_retries控制进入订单确认页后逐个勾选观演人找不到元素时按 0.5 秒间隔自动重试最多 5 次。提交if_commit_order为 true 就自动点提交为 false 就停住等你人工确认。移动端思路一致Appium 服务监听 4723 端口脚本连上它去驱动手机你只需在 App 里手动搜到演出并停在详情页后面的城市、日期、票档由脚本接手。双端并存的原因是场景不同——PC 端方便观察和调试移动端能触达 App 专属的票源和链路开售时哪端稳就用哪端。快速上手安装命令与最小可运行配置环境都备齐了从哪里开始动手按装环境 → 改配置 → 跑起来走一遍。系统要求Python 3.9、最新版 Chrome移动端另需 Node.js 20.19.0或 22.12.0、24.0.0、Appium 3.1.0、Android 真机或模拟器。第一步拉代码装依赖git clone https://gitcode.com/GitHub_Trending/ti/ticket-purchase cd ticket-purchase pip install -r damai/requirements.txt bash check_environment.shcheck_environment.sh会逐项检查 Python、Node.js、Appium、Android SDK、ADB、设备是否在线、服务是否在跑、配置文件是否就位输出里标红哪项就补哪项。第二步改配置。PC 端在damai/目录下建config.json最小可运行版本如下if_commit_order先设为 false让流程停在订单确认页人工确认后再提交{ index_url: https://www.damai.cn/, login_url: https://passport.damai.cn/login, target_url: https://detail.damai.cn/item.htm?id740680032762, users: [张三, 李四], city: 广州, dates: [2023-10-28], prices: [1039], if_listen: true, if_commit_order: false, max_retries: 1000 }移动端不用新建文件仓库里就带damai_appium/config.jsonc直接编辑即可字段见下一节。第三步跑起来。二选一# PC 端 cd damai python damai.py # 移动端或手动appium --port 4723然后 cd damai_appium python damai_app_v2.py ./start_appium.sh ./start_ticket_grabbing.shPC 端首次运行会弹出扫码登录移动端则要求手机上的大麦 App 已打开并停留在目标详情页。关键参数详解配置字段从哪来怎么填才不出错最容易翻车的不是写代码是填配置。这些字段的值到底从哪抄看演出详情页。下面这张标注图里红框一一对应地址栏整段 URL 是target_url城市行的广州站填city场次行的2023-10-28 周六 19:00填dates票档1039元内场…在prices里只填数字 1039。PC 端config.json字段含义去哪取 / 怎么填易错点index_url大麦网首页固定值基本不用动login_url登录页固定值别带多余参数target_url目标详情页复制浏览器地址栏整段只填 id 不行users观演人姓名列表与大麦账号实名完全一致多一个空格、姓名对不上都会选不中city演出城市页面XX 站别把站写进去dates优先场次可多个页面场次行可混写2023-10-2810月28日顺序即优先级prices票价档可多个页面票档价格只填数字如 1039前到后是优先级if_listen监听缺货登记回流票true / false想等回流票就开if_commit_order自动提交订单true / false首次使用建议 falsemax_retries最大轮询次数默认 1000别设得过猛fast_mode快速模式默认 true排错时关掉page_load_delay订单确认页等待秒数默认 2网络慢提到 3~5移动端config.jsonc字段更少注意格式差异字段含义易错点server_urlAppium 服务地址默认http://127.0.0.1:4723端口被占就连不上keywordApp 内搜索关键词用搜索能唯一命中的艺人名users观演人列表必须实名一致city/date城市与日期date跟 App 显示走如 12.06price票档文本带单位如内场1199元price_index票档索引从 0 起数错一位就选错档if_commit_order自动提交与 PC 端同理实战演练移动端周深深圳站完整走一遍参数填完了开售当天怎么操作 这次目标定周深深圳站演唱会走移动端仓库的默认推荐路径。开售前准备建议提前 30 分钟做完bash check_environment.sh全绿再继续./start_appium.sh启动 Appium 服务4723 端口真机开启 USB 调试连接或启动模拟器大麦 App 登录好账号编辑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: false }执行过程手机上搜索周深进入深圳站详情页保持 App 在前台运行./start_ticket_grabbing.sh出现确认提示输入 y脚本连上 4723依次匹配城市、日期、票档点击预订进入订单确认页结果判断控制台输出选择成功、手机进入订单确认页说明链路通了if_commit_order是 false核对金额和观演人后手动提交提示Appium 服务器未运行回到第 2 步查服务正式演出前务必用一场非目标演出完整空跑一次通过后再改配置上正事调优与排错提速手段与高频报错环境没问题却抢不到通常是两类原因不够快或者卡在了某一步。提速手段fast_mode默认开。指南里实测整体提速约 50%~70%省下的都是页面等待首次使用或排错时关掉输出更详细page_load_delay默认 2 秒订单确认页找不到元素就先提到 3~5 秒max_retries与if_listen准点抢提高轮询上限预售、回流票场景把if_listen保持 true网络与时间优先有线网络关掉吃带宽的程序提前 30 分钟启动、提前 10 分钟完成登录不要同时跑多个脚本高频报错对照现象Error: Node version must be at least ^20.19.0 || ^22.12.0 || 24.0.0原因移动端要求较新的 Node本机版本偏低。解法升级 Node.js例如brew upgrade node升到任一兼容大版本。现象Neither ANDROID_HOME nor ANDROID_SDK_ROOT environment variable was exported原因Android SDK 环境变量没导出。解法export ANDROID_HOME/path/to/android/sdk并对ANDROID_SDK_ROOT做同样设置写进 shell 配置使其长期生效。现象Unable to find an active device or emulator原因设备没连上或调试未开启、系统没启动完。解法adb devices看设备列表真机开启 USB 调试用adb shell getprop sys.boot_completed确认启动完成。现象PC 端提示找不到观演人元素或报SessionNotCreatedException之类的驱动版本错误。原因页面没加载完、姓名存在空格或后缀差异、ChromeDriver 与浏览器版本不匹配。解法调大page_load_delay、关掉fast_mode看扫描输出核对文本驱动问题直接重跑脚本它会自动装匹配版本。合规提醒与技术收获⚖️ 先说两句底线这是个人购票工具只为自己想看的演出服务遵守大麦用户协议不用于商业倒卖配置文件里有实名信息别外传。养成习惯先用非目标场次空跑再上正事。如果你顺手读源码这些工程点值得学Selenium 的 WebDriver 用法与 ChromeDriver 版本自动匹配见 damai/check_environment.py移动端 Appium UiAutomator2 的驱动链路见 damai_appium/Cookie 持久化与复用跳过重复登录元素模糊匹配加自动重试0.5 秒间隔、最多 5 次配置驱动设计整套抢票策略就是一个 JSONfast_mode的性能取舍哪些等待能砍哪些必须留想扩展的话开售提醒、多场次并行、图形化配置都是可做的方向想法也可以直接在仓库 issue 里讨论。工具只是手段真正决定成败的是你填的配置和提前备好的环境。✅ 去仓库看一遍 README.md 和核心逻辑 damai/concert.py把if_commit_order设为 false 跑通你的第一次空跑十分钟后你就会有完整的体感。【免费下载链接】ticket-purchase大麦自动抢票支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考