ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

大麦抢票自动化指南:如何从环境自检到订单提交,3分钟跑通全流程

大麦抢票自动化指南:如何从环境自检到订单提交,3分钟跑通全流程 大麦抢票自动化指南如何从环境自检到订单提交3分钟跑通全流程【免费下载链接】ticket-purchase大麦自动抢票支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase本文基于开源项目 ticket-purchase 撰写。这是一个用 Selenium 与 Appium 构建的大麦抢票自动化工具把打开详情页 → 选城市、场次、票价 → 选观演人 → 提交订单这条链路交给脚本执行人只负责填配置和最后的支付确认。适合两类人一是在开票时刻总是慢半拍的普通观众二是想学习 Appium/Selenium 移动端与 Web 端自动化的开发者。先说清楚它的边界工具负责选与点不负责付。订单提交后仍需你本人在规定时间内完成支付热门场次的竞争依旧存在自动化压缩的是操作时间不保证必然买到。一分钟看懂它能做什么Web 端Selenium Chrome扫码登录后自动进入目标演出页轮询立即预订按钮出现即点击随后按配置选择城市、场次、票价、观演人并提交订单。核心流程在 damai/concert.py。移动端Appium 大麦 APP很多场次只在 APP 端开售移动端方案在真机或模拟器上直接操作大麦 APPV2 版改用坐标点击与极短等待来提升响应速度实现见 damai_appium/damai_app_v2.py。内置重试按钮未出现、观演人元素未加载时会自动重试观演人扫描最多 5 次、每次间隔 0.5 秒避免一次抖动就终止。三分钟跑起来环境自检与最小命令大麦抢票环境一键自检步骤git clone https://gitcode.com/GitHub_Trending/ti/ticket-purchase cd ticket-purchase ./check_environment.sh第一条命令拉取代码第二条进入目录第三条是移动端环境自检脚本会依次检查 Python、Node.js、Appium、Android SDK、ADB、设备连接和大麦 APP 是否安装每项给出 ✅ 或 ❌并在失败时直接打印修复命令。Web 端另有 Python 版自检顺带下载匹配的 ChromeDriverpython damai/check_environment.py最快运行抢票脚本的命令Web 端只需要 Chrome 和 Python 依赖cd damai python damai.py启动后会打开浏览器脚本先校验 damai/config.json 是否存在、必填字段是否齐全然后请你扫码登录之后全程自动。移动端需要 Android 设备 Appium./start_appium.sh # 启动 Appium 服务器占用一个终端 ./start_ticket_grabbing.sh # 另一个终端执行先确认配置再开始start_ticket_grabbing.sh会先curl检查 Appium 是否存活、打印当前配置摘要并要求你手动输入 y 确认避免误触。注意这两个脚本里硬编码了作者 Mac 上的 Android SDK 路径/Users/shengwang/...非 macOS 环境建议改成手动启动效果完全一样export ANDROID_HOME/your/path/to/android/sdk # 指向你自己的 SDK appium --port 4723 # 启动 Appium cd damai_appium python damai_app_v2.py # 执行抢票移动端运行前先在手机/模拟器里把大麦 APP 打开、登录、搜索到目标演出并停在详情页脚本从详情页这个位置开始接管。一次完整实战一场广州演唱会的 Web 端抢票下面用一个真实页面的走查过程演示参数是怎么填的所有素材都来自仓库内截图。第 1 步打开演出详情页拿 target_url。在大麦网找到目标演出示例为「2023 当我们谈论爱情·梁静茹世界巡回演唱会 广州站」点开详情页后直接复制地址栏填入配置的target_url。第 2 步把页面元素逐项映射到配置。仓库里的标注图已经把对应关系画出来了city取城市标签广州、date取场次2023-10-28、price取票档1039、target_url取地址栏。第 3 步运行并观察控制台。执行python damai.py后正常输出应依次出现配置加载成功打印目标 URL、观众人数、最大重试次数→ Chrome 环境就绪 → 扫码登录 → 城市匹配成功 → 场次匹配成功 → 票价匹配成功 → 进入轮询预订按钮状态。开票瞬间检测到立即预订按钮后自动点击跳转订单确认页逐个勾选观演人最后打印订单已提交。耗时参考官方文档 完整使用指南(PC端).md.md) 给出的数据是开启fast_mode后详情页选择环节从 4~7 秒压缩到 1.1~1.8 秒轮询间隔从 1 秒降到 0.3 秒整体相比普通模式节省约 5~8 秒——这几秒在开票瞬间就是差距所在。脚本提交订单后页面会停留 5 分钟留给你的就是完成支付。配置速查大麦抢票参数对照表配置文件是全部行为的大脑两端各一份字段如下。Web 端damai/config.json字段含义示例易踩坑index_url/login_url首页、登录页地址https://www.damai.cn/一般不用改target_url演出详情页地址https://detail.damai.cn/item.htm?idxxx必须打开该页后从地址栏复制users观演人姓名数组[张三,李四]必须与 APP 内实名观演人完全一致注意空格与后缀city城市广州写页面标签原文不要写成广州市dates场次日期数组[2023-10-28]可多写几种格式兜底如10月28日prices票价数组[1039]同样建议多格式[1039,¥1039]if_listen监听缺货/回流票true想抓回流票时保持开启if_commit_order是否自动提交订单false首次运行建议先关人工确认再手动提交max_retries最大重试次数1000准点开票可适当调大fast_mode快速模式true调试出错时先关掉看详细日志page_load_delay页面加载等待秒2网络慢时调到 5~10仓库自带的移动端配置 damai_appium/config.jsonc 示例长这样Web 端config.json同理字段见上表移动端damai_appium/config.jsonc字段含义示例易踩坑server_urlAppium 服务器地址http://127.0.0.1:4723必须与appium --port一致keyword搜索关键词周深运行前先在 APP 内搜好并进入详情页users观演人数组[王胜,潘鸿运]与实名信息一致city城市深圳同 Web 端取页面原文date日期12.06注意是月.日短格式price票价描述内场1199元仅作展示参考price_index票档索引从 0 计5V2 版靠索引点击需事先手动数好位置这是移动端最关键的参数if_commit_order是否自动提交true首次建议先设false为什么移动端要用索引而不是按文字找按钮作者在 damai_appium/app.md 里解释大麦 APP 更新后票价按钮的 Text 变成了空串无法再用文本定位V2 改为解析页面信息、按下标取元素。代价就是这个下标需要人工提前数。翻车现场与解法常见报错对照以下均按现象 → 对策整理来自 README 故障排除章节与源码逻辑按顺序排查效率最高。Q1报SessionNotCreatedException: This version of ChromeDriver only supports...ChromeDriver 与浏览器版本不匹配。直接重跑脚本即可——damai/check_environment.py 会自动下载正确版本也可单独执行它做体检。Q2启动 Appium 时提示Node version must be at least ^20.19.0 || ^22.12.0 || 24.0.0Node.js 太旧。升级到 20.19.0 及以上版本后重试macOS 可brew upgrade node。Q3提示Neither ANDROID_HOME nor ANDROID_SDK_ROOT environment variable was exported没有导出 Android SDK 环境变量。执行export ANDROID_HOME/你的/sdk路径与export ANDROID_SDK_ROOT同路径并建议写进~/.bashrc持久化。Q4adb devices列表是空的或报Unable to find an active device设备没连上真机要开 USB 调试并授权模拟器要确认已启动完成adb shell getprop sys.boot_completed应返回 1。连上后再用adb shell pm list packages | grep damai确认大麦 APP 已安装包名cn.damai。Q5脚本报 AppiumConnection refused服务器没起来或端口不对。先curl http://127.0.0.1:4723/status验证通了再跑脚本不通就回到启动 Appium那一步并确认config.jsonc里的server_url端口一致。Q6日志反复出现未找到包含 张三 的元素三种常见原因按概率排页面还没加载完把page_load_delay调到 3~5姓名与页面文本不一致先关fast_mode看扫描输出用 F12 查确切文本页面上可能是张三 带空格或张三(VIP)带后缀页面结构变化保留完整调试输出以便排查。Q7卡在未找到明显的提交按钮先确认按钮没被弹窗或遮罩挡住、页面本身能手动点到调试期保持if_commit_order: false人工补上最后一下比盲目重试安全。进阶调优快速模式、回流票与多端协同快速模式fast_mode: true会缩短所有 sleep点击后等待 0.5s→0.2s、轮询 1s→0.3s并跳过冗余调试输出。官方文档给出的总体收益是节省 5~8 秒核心逻辑不变。调试阶段请关掉它换取完整日志。回流票捕捉热门场次开票后几分钟到几小时内常有退票回流。保持if_listen: true让脚本持续监听缺货/可购状态变化开售后 30 分钟到 2 小时是文档建议的重点时段。Web 移动端双端两条链路是独立实现的理论上可以在不同设备上并行。但项目文档同时提醒不要在同一账号上并发跑多个脚本——如果做多端布局请使用不同账号与设备并各自独立配置。移动端提速细节V2 版用mobile: clickGesture原生坐标点击duration 仅 50ms、禁用窗口动画、waitForIdleTimeout设为 0、显式等待从 5 秒压到 2 秒详见 damai_appium/app.md。代码地图目录结构与关键文件ticket-purchase/ ├── damai/ # Web 端抢票Selenium │ ├── damai.py # 入口校验配置 → 登录 → 选场次票价 → 提交 │ ├── concert.py # 核心业务Cookie 登录、匹配逻辑、订单提交 │ ├── config.py # 配置数据类 │ ├── check_environment.py # Chrome/ChromeDriver 自检与自动下载 │ └── requirements.txt # 依赖selenium4.18.1 ├── damai_appium/ # 移动端抢票Appium │ ├── damai_app_v2.py # 优化版主程序坐标点击 极速等待 │ ├── damai_app.py # 初版实现可对照阅读 │ ├── config.py # 配置加载 │ ├── config.jsonc # 移动端配置文件 │ └── app.md # V2 优化说明 ├── check_environment.sh # 移动端环境自检 ├── start_appium.sh # Appium 启动脚本 ├── start_ticket_grabbing.sh # 抢票启动脚本带确认交互 ├── 完整使用指南(PC端).md # Web 端详细指南含性能数据与排查表 └── tests/ # pytest 测试套件单元 集成开工清单与合规提示抢票开始前对照过一遍./check_environment.sh全部通过Web 端 ChromeDriver 就绪target_url/keyword已指向目标演出详情页能手动打开users与 APP 内实名观演人逐字核对过第一次演练时if_commit_order设为false走通全流程再放开系统时间已同步开售前 30 分钟启动脚本提前 10 分钟完成登录网络稳定优先有线关掉占带宽的程序合规与账号安全项目许可证声明仅供学习和研究使用请勿用于商业用途使用前请自行确认大麦网使用条款控制重试频率不要用于倒卖门票。配置文件里含观演人姓名等个人信息不要外传。支付环节始终由本人完成提交后留意订单金额与票档是否配置一致。工具把点击的时间成本降到了最低但开票瞬间的竞争、支付倒计时里的紧张感仍属于人的一部分。把准备工作做扎实剩下的交给脚本。【免费下载链接】ticket-purchase大麦自动抢票支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表