大麦自动抢票怎么跑3 个 Shell 脚本跑通移动端购票附配置参数与排障表【免费下载链接】ticket-purchase大麦自动抢票支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchaseticket-purchase 用 Python 做双端抢票Web 端靠 Selenium 驱动 Chrome 浏览器移动端靠 Appium一种在电脑上驱动手机 App 的框架驱动安卓大麦 App从选票档到提交订单全自动。三个 Shell 脚本串起自检、启动、执行的全流程这篇帮你把环境、配置、排障一次理顺。先做决定两条路线怎么选仓库里有两套互相独立的实现按设备条件二选一即可Web 端damai/damai.py 基于 Selenium一个控制浏览器的 Python 库操作网页。移动端damai_appium/damai_app_v2.py 基于 Appium 操作安卓客户端作者文档里注明大麦的大部分票只能在 App 端购买因此移动端是被主推的路线。对比维度Web 端移动端环境成本只需 ChromeChromeDriver 自动下载Node.js Appium Android SDK 真机或模拟器上手时间改完配置直接跑还要把设备、详情页全部就位覆盖场景网页端可见的购票功能App 端票源覆盖更广已知限制无额外说明预约类演出未实现price_index必须预先手动数好 环境自检脚本check_environment.sh 与从零到就绪第一步永远是先跑仓库自带的体检别手动装环境git clone https://gitcode.com/GitHub_Trending/ti/ticket-purchase cd ticket-purchase ./check_environment.shcheck_environment.sh 会逐项核对Python、Node.js并检查版本是否够新、Appium、Android SDK、ADB、已连接的设备、大麦 App 是否安装、4723 端口的 Appium 服务、config.jsonc是否存在。缺什么直接打印安装命令按提示补齐即可。缺依赖时按顺序装pip install -r damai/requirements.txt # Python 依赖selenium4.18.1 npm install -g appium # 全局安装 Appium 服务 appium driver install uiautomator2 # 安卓 UI 自动化驱动版本红线Python 3.9Node.js 需 20.19.0 / 22.12.0 / 24.0.0低于这个范围 Appium 会直接报错见后文排障表Appium 3.1.0。一个容易踩的坑仓库脚本里硬编码了作者本机的路径。start_appium.sh、start_ticket_grabbing.sh 和 check_environment.sh 中写死了/Users/shengwang/Library/Android/sdkstart_ticket_grabbing.sh 末尾还写死了一个 pypoetry 虚拟环境的 Python 路径。首次使用要全部改成你机器上的实际路径否则脚本会在环境设置和解释器调用两处失败。配置参数速查移动端 config.jsonc 与反直觉字段移动端的全部参数集中在 damai_appium/config.jsonc字段示例值作用与坑点server_urlhttp://127.0.0.1:4723Appium 服务地址默认本机 4723 端口keyword演出关键词App 内搜索用v2 版假设你已站在详情页此值主要供核对users[观演人A, 观演人B]观演人姓名脚本按文本精确匹配勾选须与账号内信息一字不差city城市名必须与详情页显示逐字一致见下文date12.06演出日期月.日格式price票档描述仅人类核对用脚本不读它定位price_index3票档在列表中的位置从 0 数起须手动数好if_commit_ordertrue新版主程序中该开关实际不生效提交步骤无条件执行旧版 damai_app.py 才读取它两个反直觉项值得单独说price_index为什么要手动数新版 App 界面上票档按钮的文本是空字符串文字定位失效脚本改成了在票档容器里取第 N 个可点击元素app.md 原话缺点是需要预先手动写进去。所以你得打开详情页从 0 开始数到目标票档把数填进配置。city为什么必须逐字一致脚本第一动作就是用UiSelector().text(城市名)精确匹配点击全半角、繁简差一个字都点不中。Web 端配置在 damai/config.jsonimg/config_json.png 是它的一个真实示例字段说明index_url/login_url/target_url首页、登录页、演出详情页地址即下图红字处要填的 URLusers观众姓名列表必填city/dates/prices城市、场次、票面价均为数组可多值if_listen/if_commit_order监听模式 / 是否提交订单开关max_retries/fast_mode/page_load_delay可选默认分别为 1000 次、True快速模式、2 秒 跑一遍从开售前准备到触发抢票移动端完整走一遍是三步顺序不能乱开售前准备。启动模拟器或连接开启 USB 调试的真机装好大麦 App 并登录在大麦 App 里搜索keyword对应的演出让页面停在演出详情页——v2 脚本的起点就是人已经站在详情页上这一步不能省。脚本和配置此时也要全部就绪。启动服务。./start_appium.sh脚本设置 ANDROID_HOME、检查设备与大麦 App然后在 4723 端口拉起服务。触发抢票。./start_ticket_grabbing.sh先验证 4723 服务在线和config.jsonc存在打印当前配置等你输入y后才真正开跑。跑起来后damai_app_v2.py 内部按固定顺序执行选城市 → 点预约/购买按钮 → 按索引选票档 → 点加号把数量加到users人数 → 确定购买 → 坐标批量勾选观演人 → 提交订单。任一步失败自动重来默认最多 3 次、间隔 2 秒每次重试会重建驱动整轮结束打印本次流程耗时。附注Web 端流程短得多——填好damai/config.json后cd damai python damai.py浏览器自动打开并进入target_url完成流程后页面会停留 5 分钟。调优监听模式、重试次数与多设备Web 端监听模式if_listen设为true后脚本在等待阶段比如缺货登记按钮持续守候适合开售前后蹲守回流票。想更快轮询就调小page_load_delay默认 2 秒网络一般再适当调低max_retries默认 1000。移动端没有监听模式重试次数写死在 damai_app_v2.py 入口的run_with_retry(max_retries3)想多试几轮直接改这一行。多设备并行仓库没有多设备调度且 capabilities 里deviceName固定为emulator-5554。要并行得改好 capabilities 分别起多个实例属于自行改造不在项目文档覆盖范围内。高频报错排查现象、原因、解法速查表现象报错原文原因解法Error: Node version must be at least ^20.19.0 \|\| ^22.12.0 \|\| 24.0.0Node.js 版本低于 Appium 要求升级 NodemacOS 可brew upgrade node再node --version确认Error: Neither ANDROID_HOME nor ANDROID_SDK_ROOT environment variable was exported环境里没有安卓 SDK 变量export ANDROID_HOME/你的sdk路径并同步ANDROID_SDK_ROOTError: Unable to find an active device or emulator模拟器没开、真机未授权或 USB 调试未开adb devices确认列表中有device状态真机重新插拔并点授权Error: Connection refusedAppium 服务没起或端口被占先./start_appium.sh再curl http://127.0.0.1:4723/status验证日志停在城市选择失败或票价报错city与页面文字不一致或price_index数错从 0 起数对照详情页逐字核对city重新数一遍票档位置边界与建议使用限制与开售前演练先认清边界再谈合规预约类演出覆盖不了。app.md 写明只处理了抢票的预约的暂未考虑预约票没有现成路径。无多设备调度deviceName写死emulator-5554并行需要自行改造。脚本对网络和设备状态不做兜底网络不稳或设备卡顿只能靠重试机制兜住一部分失败。仓库声明仅供学习和研究使用请勿用于商业用途使用时请遵守大麦网的使用条款。开售前按这份清单过一遍开售时基本只剩按y./check_environment.sh无 ❌ 项模拟器或真机就位大麦已登录App 停在目标演出详情页city、date、users与页面逐字一致price_index刚数过curl http://127.0.0.1:4723/status有响应【免费下载链接】ticket-purchase大麦自动抢票支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考