GitHub_Trending/ti/ticket-purchase:革命性大麦抢票工具,支持多用户多场次智能选择
你还在为演唱会门票秒空而抓狂?还在手动切换多个场次和票价选项而错失良机?本文将为你介绍一款革命性的大麦自动抢票工具,它能支持多用户、多城市、多日期场次及价格选择,让你轻松搞定热门演出门票。读完本文,你将了解该工具的核心功能、两种抢票方案的实现原理、详细的配置步骤以及实际操作流程,助你高效抢票。
核心功能解析
该抢票工具的核心在于其强大的自动化能力和灵活的配置选项,主要体现在以下几个方面:
- 自动无延时抢票:借助Selenium或Appium等自动化工具,模拟用户的购票流程,实现接近实时的抢票操作,大大提高抢票成功率。
- 多维度选择支持:可根据用户需求,灵活选择观演人员、城市、日期场次以及价格等关键信息,满足不同场景下的抢票需求。
工具架构概览
工具主要包含网页端和安卓端两个版本,分别通过不同的技术栈实现抢票功能。网页端基于Selenium,安卓端则依赖Appium。项目结构清晰,主要分为damai(网页端相关代码)和damai_appium(安卓端相关代码)两个目录,便于维护和扩展。
两种抢票方案实现
网页端抢票方案
网页端抢票方案主要通过Selenium模拟浏览器操作来完成,其核心代码位于damai/concert.py文件中。该方案的实现流程如下:
- 登录验证:支持Cookie登录方式,用户只需扫码一次,后续可通过保存的Cookie自动登录,避免重复验证。
- 目标页面访问:登录成功后,自动跳转到用户指定的演唱会门票页面。
- 场次与票价选择:根据用户在配置文件中设定的城市、日期场次和价格等信息,自动筛选并点击符合条件的选项。
- 订单提交:选定合适的门票后,自动勾选观演人员信息,并提交订单。
安卓端抢票方案
安卓端抢票方案则利用Appium实现对大麦APP的自动化控制,其V2版本的介绍可参考damai_appium/app.md。该方案具有以下特点:
- APP端优势:由于大麦的大部分票只能在APP端购买,安卓端方案弥补了网页端的不足。
- 优化与改进:V2版本针对APP界面更新导致的票价信息获取问题,采用索引方式获取按钮;增加了重试机制,优化了多人勾选逻辑,使用
WebDriverWait替代隐式等待,提升了抢票效率。
详细配置步骤
环境准备
网页端环境配置
- 安装Python3环境:
- Windows用户可访问Python官方网站下载安装程序,并勾选"Add Python X.X to PATH"选项。
- macOS用户可通过Homebrew安装Python3,命令为
brew install python@3。
- 安装依赖库:在命令窗口输入
pip3 install selenium安装Selenium。 - 下载Google Chrome浏览器:确保浏览器版本与Selenium驱动兼容。
安卓端环境配置
- 安装Node环境:需安装node版本号18.0.0及以上,以具备npm功能。
- 配置Android SDK:下载并安装Android SDK,并配置相应的环境变量。
- 安装Appium:通过npm安装Appium,命令为
npm install -g appium,同时还需下载UiAutomator2驱动,命令为npm install appium-uiautomator2-driver。若遇到Chromedriver安装错误,可设置环境变量export APPIUM_SKIP_CHROMEDRIVER_INSTALL=true解决。 - 安装Appium Python客户端:命令为
pip3 install appium-python-client。
配置文件修改
网页端配置文件
在运行网页端抢票程序之前,需要修改配置文件。该文件用于指定用户需要抢票的相关信息,包括演唱会的场次、观演的人员、城市、日期、价格等。文件结构如下图所示:
文件内容说明:
index_url为大麦网的地址,无需修改。login_url为大麦网的登录地址,无需修改。target_url为用户需要抢的演唱会票的目标地址,需要用户自行修改。users为观演人的姓名,观演人需要用户在手机大麦APP中先填写好,然后再填入该配置文件中。city为城市,如果用户需要抢的演唱会票需要选择城市,请把城市填入此处,如无需选择,则不填。date为场次日期,可多选。price为票档的价格,可多选。if_commit_order为是否要自动提交订单,设置为true。if_listen为是否回流监听,设置为true。
安卓端配置文件
安卓端配置文件为config.jsonc,可通过Config.load_config()方法加载。配置项包括服务器地址、关键词、用户信息、城市、日期、价格等,用户需根据实际需求进行修改。
配置示例说明
进入大麦网选择需要抢票的演唱会,假设目标演唱会页面如下图所示:
按照下图的标注对配置文件进行修改,将target_url设置为该演唱会的地址,users填入观演人姓名,city、date和price分别选择对应的城市、日期场次和票价。
最终config.json的文件内容如下:
{
"index_url": "https://www.damai.cn/",
"login_url": "https://passport.damai.cn/login?ru=https%3A%2F%2Fwww.damai.cn%2F",
"target_url": "https://detail.damai.cn/item.htm?spm=a2oeg.home.card_0.ditem_1.591b23e1JQGWHg&id=740680932762",
"users": [
"名字1",
"名字2"
],
"city": "广州",
"date": "2023-10-28",
"price": "1039",
"if_listen":true,
"if_commit_order": true
}
实际操作流程
网页端抢票流程
网页端抢票的流程图如下:
具体操作步骤:
- 运行程序:进入命令窗口,执行
cd damai进入网页端代码目录,然后执行python3 damai.py运行抢票程序。 - 登录操作:程序会自动打开浏览器并跳转到大麦网登录页面,用户需扫码登录,登录成功后Cookie会被保存,以便后续自动登录。
- 抢票过程:程序会根据配置文件中的信息,自动选择城市、场次、票价和观演人,并提交订单。
安卓端抢票流程
- 开启Appium服务端:执行命令
appium --address 0.0.0.0 --port 4723 --relaxed-security启动Appium服务。 - 执行抢票任务:进入
damai_appium目录,执行python damai_app_v2.py运行抢票脚本。
安卓端抢票脚本通过Appium连接到大麦APP,模拟用户在APP上的操作,实现自动抢票功能。其核心代码片段如下,用于配置设备信息并连接Appium server:
from appium import webdriver
from appium.options.common.base import AppiumOptions
device_app_info = AppiumOptions()
device_app_info.set_capability('platformName', 'Android')
device_app_info.set_capability('platformVersion', '10')
device_app_info.set_capability('deviceName', 'YourDeviceName')
device_app_info.set_capability('appPackage', 'cn.damai')
device_app_info.set_capability('appActivity', '.launcher.splash.SplashMainActivity')
device_app_info.set_capability('unicodeKeyboard', True)
device_app_info.set_capability('resetKeyboard', True)
device_app_info.set_capability('noReset', True)
device_app_info.set_capability('newCommandTimeout', 6000)
device_app_info.set_capability('automationName', 'UiAutomator2')
# 连接appium server,server地址查看appium启动信息
driver = webdriver.Remote('http://127.0.0.1:4723', options=device_app_info)
总结与展望
工具优势总结
GitHub_Trending/ti/ticket-purchase抢票工具凭借其自动化抢票能力、多维度选择支持以及两种抢票方案(网页端和安卓端),为用户提供了高效、便捷的抢票体验。网页端方案操作简单,适合普通用户;安卓端方案则针对APP端购票限制,拓展了抢票渠道。
未来功能展望
目前该工具已实现了抢票的核心功能,但仍有进一步优化和拓展的空间。未来可以考虑增加预约功能,实现对预约类门票的自动化抢购;进一步优化界面元素定位算法,提高对APP界面更新的适应性;增加更多的错误处理和异常恢复机制,提升抢票的稳定性和可靠性。
希望本文介绍的抢票工具能帮助你顺利抢到心仪的演唱会门票。如果你觉得本文对你有帮助,欢迎点赞、收藏、关注,以便获取更多相关工具和技术的介绍。下期我们将带来该工具的高级配置技巧,敬请期待!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考







