ticket-purchase用 Selenium 与 Appium 驱动大麦购票的 Web 与移动端实践【免费下载链接】ticket-purchase大麦自动抢票支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchaseticket-purchase 是面向大麦网的 Python 自动化购票项目Web 端通过 Selenium 驱动 Chrome 浏览器移动端通过 Appium 驱动 Android 设备按预先写好的配置完成登录、选场次、选票价、勾选观演人并提交订单等操作。本文面向第一次接触它的开发者讲清楚最短的运行路径、每个配置项的含义、运行时如何判断状态是否正常以及它的适用边界在哪里。先明确边界它能做什么不能做什么这个项目适合单一账号、单台设备、针对一场特定演出的自动化练习不适合也不应该被用于绕过平台安全机制。可以做到的开售前持续监测目标票档的可购状态状态变化时按预设参数执行点击流程自动完成登录后的页面跳转、城市/场次/票价匹配、观演人勾选内置重试与元素等待逻辑临时性失败页面未加载完、元素暂未出现会被重新尝试Web 与 Android 两条链路可独立使用也可只跑其中一条需要自己把握的它不能保证一定买到票票源是否充足、开售瞬间的竞争状况都不在它的控制范围内请勿用它批量控制多台设备、绕过验证码或风控、刷接口也不要用获得的票券进行倒卖使用时请遵守大麦网服务条款和当地法律法规建议仅用于个人学习与测试环境并用专门账号操作能力清单这个项目提供什么双端自动化damai/目录实现 Web 端Selenium Chromedamai_appium/目录实现移动端Appium UiAutomator2。由于部分演出仅支持 APP 内购买项目作者将移动端作为重点优化方向见damai_appium/app.md配置驱动演出关键词、城市、日期、票价、观演人名单全部写在 JSON 配置文件里脚本本体不含演出信息持续监测与重试未开售期间按固定节奏轮询页面状态元素查找失败时带间隔重试环境辅助脚本仓库根目录提供check_environment.sh检查环境、start_appium.sh启动 Appium 服务、start_ticket_grabbing.sh启动移动端任务三个脚本Web 端附加能力快速模式缩短固定等待、多格式日期/票价匹配、缺货登记监听开关详见完整使用指南(PC端).md三条上手路径先获取代码以下路径中 clone 地址仅供拉取项目使用git clone https://gitcode.com/GitHub_Trending/ti/ticket-purchase cd ticket-purchase poetry install # 或 pip install -r requirements.txt路径 A移动端推荐覆盖更多演出安装 Node.js20.19.0 及以上与 Appiumnpm install -g appium再执行appium driver install uiautomator2配置 Android SDK 环境变量ANDROID_HOME、ANDROID_SDK_ROOT用adb devices确认真机或模拟器已连接在设备上安装大麦 APP 并手动登录观演人提前在 APP 内添加好编辑damai_appium/config.jsonc填入演出参数运行./start_ticket_grabbing.sh或手动执行python damai_appium/damai_app_v2.py路径 BWeb 端需要最新版 Chrome。按完整使用指南(PC端).md中的模板准备好配置文件字段包括target_url、users、city、dates、prices等然后运行python damai/damai.py。首次运行会提示扫码登录用大麦 APP 扫浏览器中的二维码即可。路径 C只读原理不运行任何代码直接阅读README.md、QUICK_START.md、完整使用指南(PC端).md再对照damai/concert.py与damai_appium/damai_app_v2.py的核心逻辑流程图原始文件在doc/大麦抢票流程.drawio。关键参数怎么填移动端配置在damai_appium/config.jsoncJSONC 格式允许注释Web 端配置字段以完整使用指南(PC端).md中的模板为准。两组配置的核心思路一致先告诉脚本找哪场演出再告诉它买哪一档票、给谁买、要不要替我点提交。字段含义填写建议常见错误target_url演出详情页地址从浏览器地址栏整段复制含查询参数只复制了域名或分享短链导致打开的不是详情页keywordAPP 内搜索词与演出名称一致如歌手名写得太泛搜索结果首页没有目标演出users观演人姓名数组与 APP/网页中登记的姓名逐字一致页面文本带空格或后缀而配置里没有匹配失败city演出城市与页面城市栏文案一致写了广州站而页面是广州以页面为准date/dates场次日期移动端为月.日Web 端支持多种格式写法年份、分隔符与页面显示不一致price/prices票价描述与票档文案一致Web 端可写多个格式变体页面价格后带元或区域说明配置里漏掉price_index票档在列表中的序号从 0 计APP 界面票价文本可能为空靠索引定位需手动数清页面改版后票档顺序变化索引指向了别的档位server_urlAppium 服务地址默认本地 4723 端口服务没启动、端口被占用仍用默认值if_commit_order是否自动点提交订单首次使用建议设为 false人工确认后再改 true未核对订单金额就开启误购max_retries/fast_mode/page_load_delay重试次数、快速模式、页面等待秒数网络慢时调大page_load_delay稳定网络再开快速模式网络一般却把等待压到最低元素频繁找不到Web 端配置文件长这样以项目文档模板为准一次完整使用流程1. 准备信息。打开目标演出的详情页记下地址栏完整链接、城市栏文案、场次日期、目标票档文案和序号以及所有观演人的准确姓名。2. 检查环境。运行./check_environment.sh按提示补齐 Python 版本、Node 版本、Appium、ADB 等依赖。移动端额外确认adb devices能看到设备、curl http://127.0.0.1:4723/status能拿到服务状态。3. 填写配置。按上表把参数写进damai_appium/config.jsonc或 Web 端配置文件。此步最容易出错建议逐项与页面文案对照。4. 启动任务。移动端./start_appium.sh起服务再./start_ticket_grabbing.sh起任务Web 端python damai/damai.py。建议在开售前 30 分钟启动并先完成登录。5. 观察状态。正常时日志会依次出现配置加载成功、环境检查通过、登录提示Web 端扫码、各选项匹配成功、进入轮询。看到匹配成功与轮询输出说明参数基本正确脚本在等待开售。6. 处理异常。未开售前任务应保持静默轮询而非报错退出一旦匹配失败、连接失败对照下一节的表格定位。运行状态判断与常见异常现象可能原因处理方式启动即报 Node 版本不满足^20.19.0等范围本机 Node 太旧升级 Node 后重装 Appium提示找不到ANDROID_HOME/ANDROID_SDK_ROOT环境变量未设置或当前 shell 未加载写入~/.bashrc后重新source或运行脚本时临时 exportadb devices列表为空真机未开 USB 调试、模拟器未启动、数据线问题启动模拟器或重插设备确认为device而非offlineAppium 连接被拒绝4723 端口服务未启动或端口被占用检查占用进程后以指定端口重启并同步改server_url反复提示某用户名元素未找到页面未加载完姓名与页面文本不一致空格、后缀调大page_load_delay、关闭快速模式看扫描日志用浏览器开发者工具核对页面确切文本票价/场次匹配不上文案与配置不一致或 APP 改版后靠索引定位的票档变了重新打开详情页逐字比对文案移动端需重数price_index元素等待超时页面结构变化或网络卡顿先手动操作一遍页面确认流程仍成立再调大超时与重试参数Web 端报 ChromeDriver 版本不匹配驱动与浏览器版本不一致重新运行脚本让其自动安装或执行python damai/check_environment.py检查登录后很快又要求登录会话过期重新扫码避免用很久没活动的旧会话低风险优化建议网络优先用稳定网络关闭占带宽的程序移动端脚本的 capabilities 里已有降低截图帧率、禁用窗口动画等设置不必自行再叠加渐进开启自动提交第一轮把if_commit_order设为 false确认能稳定走到订单确认页后再改为 true多格式容错Web 端的dates、prices支持写多个格式变体页面文案稍有出入时命中率更高记录日志保留每次运行的控制台输出异常时匹配成功/失败出现在哪一步比报错堆栈更有诊断价值单设备单任务同一账号、同一设备只跑一个任务避免多脚本并行带来的异常请求下一步可以看什么移动端整体设计与已知局限damai_appium/app.md移动端主逻辑damai_appium/damai_app_v2.pyWeb 端主逻辑damai/damai.py与damai/concert.py完整 Web 端参数、快速模式与排查清单完整使用指南(PC端).md流程全貌doc/大麦抢票流程.drawio及README.md中的项目结构说明把环境跑通、参数和页面文案对齐是使用这个项目时最有价值的两件事。自动化缩短了从票可买到点下提交的时间但票能否买到仍取决于票源本身请合理预期。【免费下载链接】ticket-purchase大麦自动抢票支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
