大麦抢票脚本从零上手: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.0 | Node 版本过低,Appium 拒绝启动 | brew upgrade node或用 nvm 装 22 LTS,node --version复核 |
Neither ANDROID_HOME nor ANDROID_SDK_ROOT environment variable was exported | Appium 找不到 Android SDK | 把 SDK 路径同时写入两个变量,存进 shell 配置文件再开新终端 |
Unable to find an active device or emulator | adb devices输出为空 | 真机确认 USB 调试已开、模拟器完全启动,再adb kill-server && adb start-server重建连接 |
Connection refused | 4723 端口没有服务在监听 | 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),仅供参考