三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

大麦自动抢票还能这样玩:一份给手速慢的人的Python+Appium开源方案上手全攻略

大麦自动抢票还能这样玩:一份给手速慢的人的Python+Appium开源方案上手全攻略

大麦自动抢票还能这样玩:一份给手速慢的人的Python+Appium开源方案上手全攻略

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

你有没有过这样的经历:闹钟定好,手指悬在屏幕上倒数,一秒不差地点下去,屏幕却先转起了圈,等页面反应过来,票已经灰了。热门演唱会开票的那几分钟,拼的从来不是网速和手速,而是"程序代替人点击"的那点时间差。

GitHub推荐项目精选旗下的开源项目 ticket-purchase(大麦自动抢票工具)正是为解决这个痛点而生:它用 Python 配合 Selenium 与 Appium,把"搜演出、选城市、挑日期、点票价、勾观演人、提交订单"这一整串手动操作全部交给脚本,支持电脑网页端和安卓手机端双端抢票。本文不堆代码,从零开始,带你把大麦自动抢票从环境搭建一路跑到成功出票。

一、先回答三个高频疑问

这套脚本到底能帮你干什么?

简单说,它是一个"替你做重复点击动作"的机器人。你把想看的演出、城市、日期、票价档位和观演人名单写进一个配置文件,脚本就会按固定顺序自动完成整套下单动作。你只需要保证账号已登录、手机(或浏览器)停留在正确页面。

为什么自动化比人手点更快?

三个原因:

  1. 零反应延迟:人从看到按钮到按下平均需要200毫秒以上,脚本可以做到几十毫秒内完成点击。
  2. 多步骤一体化:选城市→选场次→选票价→选人数→勾观演人→提交,中间任何一步等人都要3-5秒,脚本一气呵成。
  3. 失败自动重试:抢票失败不需要重新手动走流程,脚本内置重试机制,按预设次数反复尝试。

它适合谁用?

  • 抢热门演唱会票屡屡陪跑的普通用户
  • 想研究移动端UI自动化测试的开发者
  • 需要批量测试票务下单流程的测试人员

二、它靠什么逻辑工作:一图看懂

整个系统的核心思路是一张状态流转图:登录验证 → 加载购票信息 → 检测票务状态 → 立即购买 → 提交订单。任何一环失败都会回到上一环重新尝试。

  • Web端:Selenium 驱动 Chrome 浏览器,模拟真人浏览与点击;
  • 移动端:Appium 配合 UiAutomator2 驱动安卓设备上的大麦APP,直接对界面元素做精确点击。

移动端的脚本还针对抢票场景做了"提速手术":关闭窗口动画、跳过页面空闲等待、把点击延迟压到0.01秒、用坐标直接触发点击而非标准点击事件——这些细节就是成功率差距的来源。

三、动手前,先按这份清单核对环境

环境没配好就开跑,脚本会在第一步就报错。开跑前请逐项确认:

环境组件最低要求验证命令
Python3.9+python --version
Node.js20.19.0+node --version
Chrome浏览器最新版打开chrome://version
Android SDK环境变量已配置adb devices
Appium3.1.0+appium --version

只跑网页端抢票,只需 Python + Chrome;想用手机端抢票,才需要 Node.js、Appium 和 Android 环境。别一上来就全部装齐。

配置 Android 环境变量时,需要把ANDROID_HOMEANDROID_SDK_ROOT指向你的 SDK 目录,并确保adb命令可用。装完 Appium 后记得补装驱动:

appium driver install uiautomator2

项目自带一个环境体检脚本,帮你把上面这些逐项检查一遍。克隆项目后直接运行:

./check_environment.sh

它会依次报告 Python、Node.js、Appium、Android SDK、设备连接、大麦APP是否安装、Appium服务器是否在运行,最后一行会告诉你"环境检查完成",任何一项不通过都能直接看到缺什么。

四、最小可运行:三步跑通第一次抢票

环境确认无误后,按下面三步走,就能完成第一次"实战演练"(建议先用一场冷门演出测试)。

第1步:启动 Appium 服务器

./start_appium.sh

这个脚本会自动设置环境变量、检查设备连接和大麦APP是否安装,然后启动监听在127.0.0.1:4723的 Appium 服务。看到服务器运行中提示即可。

第2步:把手机/模拟器准备好

  1. 打开安卓模拟器或连接真机(记得开USB调试);
  2. 安装并登录大麦APP;
  3. 搜索目标演出,进入演出详情页,停在购买入口。

第3步:运行抢票脚本

./start_ticket_grabbing.sh

脚本会先确认 Appium 在运行、配置文件存在,然后提示你确认当前配置,输入 y 回车后开始抢票。全程看控制台输出即可:选城市、点预约、选票价、选数量、勾用户、提交订单,每步都有日志。

五、配置文件是灵魂:每个参数都影响成败

抢票前必须改对配置文件。移动端的配置位于damai_appium/config.jsonc,打开后长这样:

下面是每个字段的通俗解释和推荐取值:

字段含义推荐取值示例注意事项
server_urlAppium服务地址"http://127.0.0.1:4723"一般不用改
keyword搜索关键词"周深"建议与页面显示完全一致
users观演人名单["王胜", "潘鸿运"]必须是实名认证过的观演人
city演出城市"深圳"与页面城市文案一致
date演出日期"12.06"按详情页场次文案填写
price票价描述"内场1199元"用于校验和展示
price_index票价索引(从0开始)5数清楚目标票价是第几个档位
if_commit_order是否自动提交订单true测试阶段建议设false

price_index是新手最容易翻车的一项。它从0开始计数:如果页面上票价档位从上到下依次是 399、599、799、999、1199 元,你要买1199元,那索引就是4。数错一格,买到的就是隔壁档。

网页端配置在damai/config.py中定义,字段包括index_urllogin_urltarget_url(目标演出详情页地址)、userscitydatesprices,另有max_retries(最大重试次数)、fast_mode(快速模式)、page_load_delay(页面加载等待秒数)等调优项。

关于参数的映射,可以参考这张带标注的截图,它演示了页面上的城市、日期、票价如何对应到配置值:

抢票前一天务必用冷门场次做一次全流程演练,确认配置无误,而不是开售前十分钟才第一次跑。

六、常见故障与对策:照着抄就行

1. Node.js 版本报错

报错形如Node version must be at least ^20.19.0。解决办法是升级 Node.js 到 20.19.0+ 或 22.12.0+,推荐用 nvm 管理版本:

nvm install 20.19.0 nvm use 20.19.0

2. 找不到安卓设备

adb devices返回空列表,先确认设备开了USB调试;如果连了模拟器但没识别,重启一下 ADB 服务:

adb kill-server && adb start-server adb devices

3. Appium 连接被拒

提示Connection refused时,先验证服务是否活着:

curl http://127.0.0.1:4723/status

如果没返回正常JSON,说明 Appium 没启动或端口被占,重跑./start_appium.sh即可。

4. 元素定位失败

页面改版、网络慢都会导致找不到按钮。对策是:把脚本的显式等待时间调大一点、为关键步骤准备备用选择器(移动端脚本已内置多组备选),以及升级脚本前先观察报错日志里是第几步失败。

5. 登录态丢失

表现为脚本能跑但提交时提示未登录。重新在设备/浏览器里登录一次,再跑脚本。建议开抢前半小时完成一次登录并保持应用在前台。

七、使用底线:这些红线不要碰

自动化工具是把双刃剑,请务必记住三条底线:

  1. 仅供学习研究:项目声明仅用于学习与测试,不要用脚本做黄牛倒卖等商业牟利;
  2. 遵守平台规则:合理设置重试频率,别把请求打到服务器崩溃,损害其他正常购票用户;
  3. 账号安全第一:用专门的测试账号,别拿常用主账号去冒险,避免触发风控。

技术带来的优势应当建立在公平和合法的基础上,这也是任何一个自动化项目能长期存在的前提。

八、下一步行动清单

步骤动作关键命令/文件
1获取项目git clone https://gitcode.com/GitHub_Trending/ti/ticket-purchase
2安装依赖pip install -r requirements.txt(Poetry 用户可用poetry install
3环境体检./check_environment.sh
4配置参数编辑damai_appium/config.jsonc
5启动服务./start_appium.sh
6开始抢票./start_ticket_grabbing.sh
7扩展学习阅读damai_appium/damai_app_v2.py研究快速点击与重试逻辑

页面端(damai/)与移动端(damai_appium/)可以同时跑,多设备协同能进一步提高成功率。配置一次、演练一次,剩下的就交给脚本和时间。祝你这轮开票,能看到久违的"下单成功"四个字。

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

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

← 返回列表