大麦自动抢票脚本实战:双端驱动 + Appium 移动端出单完整指南
大麦自动抢票脚本实战双端驱动 Appium 移动端出单完整指南【免费下载链接】ticket-purchase大麦自动抢票支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase开源项目 ticket-purchase 是一个大麦自动抢票工具思路是把购票链路拆成两条独立跑道Web 端用 Selenium控制 Chrome 浏览器的库操作网页移动端用 Appium在电脑上驱动手机 App 的框架操作大麦安卓客户端自动完成选城市、选票档、勾选观演人、提交订单。适合手上已有 Android 模拟器或真机、想处理热门演出购票的开发者。先判断哪条跑道适合你两条跑道的适用边界完全不同选错方向会浪费整个准备周期。维度Web 端Selenium移动端Appium要装的东西Chrome 自动下载的 ChromeDriverNode.js、Appium、安卓设备/模拟器能覆盖的功能网页端可见的购票操作大麦的大部分票只能在 App 端购买覆盖面更大开售前你要做的填好damai/config.json、登录浏览器设备就位并手动停在该演出的详情页已知短板无额外说明预约类演出未实现票档靠索引定位得自己数好位置先填进配置一句话判断如果你要抢的演出在网页端能正常看到立即购买Web 端够轻快如果该票只在大麦 App 里卖那就必须走 Appium 这条路。完整使用指南(PC端).md.md) 里有 PC 端的细节补充。环境一次配齐自检脚本 版本门槛把环境和工具链一次性配到位是后面所有步骤的前提。先克隆代码git clone https://link.gitcode.com/i/26c5d610d1fbf0143ab94a4b1d738182 cd ticket-purchase然后跑环境自检./check_environment.sh自检脚本 会逐项输出 Python、Node.js 版本、Appium、Android SDK、ADB、设备连接、大麦 App 是否已安装等状态缺哪一项就给出对应提示照着补齐即可。装依赖和移动端工具链pip install -r damai/requirements.txt npm install -g appium appium driver install uiautomator2版本门槛记牢这三个数字Python 3.9Node.js 20.19.0 / 22.12.0 / 24.0.0Appium 3.1.0。Node 版本低于要求时脚本会直接报Error: Node version must be at least ^20.19.0 || ^22.12.0 || 24.0.0升级后node --version复核一下。开跑前要手动填好的 3 件事1. 改掉脚本里写死的作者路径start_appium.sh与 start_ticket_grabbing.sh 内部硬编码了作者本机的 SDK 路径/Users/shengwang/...和 poetry 虚拟环境路径。在你机器上这两处要换成你自己的 Android SDK 实际位置和 Python 环境否则脚本一执行就会失败。2. 把 配置文件 的每个字段都对齐页面移动端的全部参数集中在damai_appium/config.jsonc逐字段对齐字段你该填什么server_urlAppium 服务地址默认http://127.0.0.1:4723keyword大麦 App 内搜索演出用的关键词users观演人姓名列表按文本精确匹配勾选须与账号内观演人信息完全一致city演出城市须与详情页显示的文字一字不差date演出日期月.日格式price票档文字描述供人工核对用price_index票档在列表中的索引从 0 开始计数if_commit_order是否自动点击提交订单3. price_index 怎么数新版大麦 App 的票档按钮文本是空字符串脚本没法再靠文字定位改成了按索引取元素。也就是说你得在演出详情页上从上到下数票档目标票档是第几个就从 0 开始数出它的位置填进price_index。这一步数错脚本会直接选错票档。下图是配置参数与页面元素的对应关系Web 端的damai/config.json字段为index_url、login_url、target_url演出详情页 URL、users、city、dates、prices、if_listen、if_commit_order另支持max_retries、fast_mode、page_load_delay三个调优项见下图从 0 到出单移动端五步执行移动端出单要按顺序走五步少一步脚本就会卡在起点。设备就位启动 Android 模拟器或连接开启了 USB 调试的真机装好大麦 App 并登录账号。拉起 Appium 服务运行./start_appium.sh。脚本会设置ANDROID_HOME、检查设备和大麦 App 是否就位然后在 4723 端口启动服务。手动停在详情页在大麦 App 里搜keyword进入目标演出的详情页。移动端脚本的起点是你已经站在详情页上这一步不能省。启动抢票运行./start_ticket_grabbing.sh。脚本先确认 Appium 服务和配置文件都就位把当前配置打印出来等你输入y确认后才真正开始。看脚本跑完主程序 内部按选城市 → 点预约/购买按钮 → 按索引选票档 → 点加号调数量 → 确定购买 → 批量勾选观演人 → 提交订单的顺序执行。任一步失败就自动重来默认最多 3 次结束后打印本次流程耗时。下图的详情页就是你要对齐城市、场次、票档的地方——参数必须和这一页实际显示的一致Web 端流程短得多填好damai/config.json后执行cd damai python damai.py浏览器自动打开并进入目标页面。进阶选项与能力边界Web 端监听模式if_listen设为true后程序会停在页面上持续等待适合开售前后守候回流票。max_retries默认 1000可按网络情况调低page_load_delay默认 2 秒调小能加快循环fast_mode默认开启见 damai.py 源码默认值。移动端没有监听模式重试次数写死在主程序入口run_with_retry(max_retries3)想要更多尝试就改这一行。预约类演出覆盖不到app.md 明确写了只处理了抢票的预约的暂未考虑预约类演出现成脚本搞不定。多设备并行要自己改仓库没做多设备调度且移动端 capabilities 里deviceName固定为emulator-5554。想并行得自行修改 capabilities 后分别跑属于自改造范围不在项目文档内。把准备工作全部提前环境、设备、配置核对都应在开售前完成。脚本对网络和设备状态不做兜底网络抖动或设备卡顿时只能靠重试机制接住一部分失败。最容易踩的 5 个错1. Node 版本报不兼容Error: Node version must be at least ^20.19.0 || ^22.12.0 || 24.0.0Node.js 低于 Appium 要求。升级 NodemacOS 用brew upgrade nodenode --version确认到位。2. ANDROID_HOME 没设置Error: Neither ANDROID_HOME nor ANDROID_SDK_ROOT ... was exported脚本运行环境缺安卓 SDK 变量。export ANDROID_HOME/你的/sdk路径并同步设置ANDROID_SDK_ROOT。3. 找不到设备Error: Unable to find an active device or emulator模拟器没启动、真机没授权或 USB 调试没开。adb devices看列表里有没有状态为device的设备真机重新插拔并确认授权弹窗。4. Appium 连接被拒绝Error: Connection refused服务没启动或端口被占。先跑./start_appium.sh再用curl http://127.0.0.1:4723/status验证服务是否响应。5. 配置对了却选不中城市或票档日志停在城市选择失败或票价报错。城市文字和页面对不上或price_index数错从 0 计数。对照详情页逐字核对city重新数一遍票档位置更新索引。项目声明仅供学习和研究使用使用时请遵守大麦网的使用条款。建议先完整跑一遍./check_environment.sh把报告里标红的项逐个补齐再配置设备和参数做开售前演练。【免费下载链接】ticket-purchase大麦自动抢票支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考