大麦抢票脚本从零上手:10分钟装好环境、抄对配置、跑通首次下单
2026/9/23 15:46:52 网站建设 项目流程

大麦抢票脚本从零上手:10分钟装好环境、抄对配置、跑通首次下单

【免费下载链接】ticket-purchase大麦自动抢票,支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase

ticket-purchase 是一个大麦抢票脚本:用 Selenium 驱动浏览器、Appium(移动端设备自动化框架)驱动安卓设备,把选城市、挑场次、选票价、勾观演人、提交订单整套动作自动点完,你只负责提前写对配置。本文带你完成首次配置与运行,并附一张高频报错自查表。

先分清分工:机器点哪些,你还得管哪些

  • 自动走完下单链路:选城市、场次、票价、数量、观演人直到提交订单。前提是账号已登录、设备或浏览器在线,它不会替你登录。
  • Web 端(Selenium + Chrome)与移动端(Appium + 安卓)两条通道,可各跑各的或同时开。移动端多一条工具链:Appium、Android SDK 都得先装好。
  • 未开售或暂时缺货时自动轮询重试。重试次数由配置里的 max_retries 限定,不是无限等。
  • dates、prices 支持多个备选,按你写的优先级依次尝试。顺序怎么排由你定,它不做自动择优。
  • 干跑开关 if_commit_order=false:走完整流程但不真提交订单。首跑验证用的就是它。

🧰 动手前:把这几件事自查一遍

Web 端只需前两项;移动端要全部过关。仓库自带./check_environment.sh一键体检,但脚本里的 Android SDK 路径写死了作者本机的,你机器上会有标红行,逐条手动核对下表更稳:

  • Python 3.9+(两端必装):python3 --version
  • Chrome 最新版(Web 端),驱动会随 selenium 自动下载
  • Node.js 20.19+ / 22.12+ / 24.0.0+(移动端):node --version
  • Appium 3.1+ 与 uiautomator2 驱动(移动端):先npm install -g appium,再appium driver install uiautomator2,用appium --version复核
  • ANDROID_HOME 与 ANDROID_SDK_ROOT 两个变量都指向你的 SDK 路径
  • 设备在线:adb devices里出现序列号和 device
  • 大麦 APP 已装:adb shell pm list packages | grep damai有输出

配置是核心:每个值从哪里抄

所有取值都藏在演出详情页里,一个都不用猜,但必须和页面文字逐字一致。

大麦演出详情页:地址栏、城市、场次、票价区域对应着全部配置值

红框标注:target_url 抄地址栏,city、date、price 抄页面对应文字

移动端编辑damai_appium/config.jsonc,摘 7 个关键字段:

"keyword": "周深", // 在 APP 搜索框里输入的搜索词 "city": "深圳", // 与页面城市标签文字逐字一致 "date": "12.06", // 场次日期,格式跟页面走 "price": "内场1199元", // 票价描述,整段文字抄下来 "price_index": 5, // 票价档位从上往下的索引,从 0 开始 "users": ["王胜"], // 观演人,与系统里存的逐字一致 "if_commit_order": false // 首跑设 false 干跑,不真下单

Web 端编辑damai/config.json,字段更多但来源相同:target_url(地址栏)、users、city、dates、prices(只填数字,如 "680")、if_listen(是否监听缺货登记)、max_retries、page_load_delay(页面加载等待秒数)。

damai/config.json 实际配置:dates 和 prices 写成数组就是备选优先级

🏁 跑起来:3步从命令到首次下单

第 1 步:装依赖(项目根目录)

git clone https://gitcode.com/GitHub_Trending/ti/ticket-purchase cd ticket-purchase pip install -r damai/requirements.txt

预期:selenium 等依赖装好。坑:跑移动端的话,别忘了上一步的 Appium 驱动,Appium 能启动但建会话时会直接失败。

第 2 步:写配置并干跑。把两端配置文件里的 if_commit_order 都设为 false,其余字段按上一页抄好。预期:流程一路走到"提交订单"前停下,不下单。坑:users 里的姓名带空格或后缀也要照抄,不一致会直接报"未找到用户"。

第 3 步:触发运行(项目根目录)

  • Web 端:python damai/damai.py。浏览器弹出后扫码登录,剩下的交给它。
  • 移动端:先在设备上打开大麦 APP 并停在目标演出详情页,然后./start_appium.sh起 4723 端口的服务,再跑./start_ticket_grabbing.sh。预期:脚本先自检服务和配置,你按 y 确认后才开始点击。坑:设备端离开详情页它就会停,开跑前最后确认一次页面位置。

卡住了?对这张表自查

报错现象最可能原因修法
Error: Node version must be at least ^20.19.0 \|\| ^22.12.0 \|\| >=24.0.0Node 版本过低,Appium 拒绝启动brew upgrade node或用 nvm 装 22 LTS,node --version复核
Neither ANDROID_HOME nor ANDROID_SDK_ROOT environment variable was exportedAppium 找不到 Android SDK把 SDK 路径同时写入两个变量,存进 shell 配置文件再开新终端
Unable to find an active device or emulatoradb devices输出为空真机确认 USB 调试已开、模拟器完全启动,再adb kill-server && adb start-server重建连接
Connection refused4723 端口没有服务在监听curl http://127.0.0.1:4723/status验证;不通就换端口,同步改配置里的 server_url
未找到用户: xxx姓名与系统观演人不一致对着 APP 观演人列表逐字核对;仍失败就把 page_load_delay 调到 3~5 秒

跑通之后

开售前用干跑模式完整走两三遍,看日志停在哪一步就修哪一步;正式抢时把 if_commit_order 翻成 true,提前几分钟把脚本挂起来即可。想深入的话:

  • README.md:整体说明、系统要求与完整安装清单
  • 完整使用指南(PC端).md.md):Web 端全参数、性能优化与排错细节
  • damai_appium/config.jsonc:移动端配置样例
  • damai/damai.py:Web 端主程序,点击与重试逻辑都在这里

【免费下载链接】ticket-purchase大麦自动抢票,支持人员、城市、日期场次、价格选择项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询