WECENG/ticket-purchase
大麦抢票脚本 V1.0
特征
- 自动无延时抢票
- 支持人员、城市、日期场次、价格选择
功能介绍
通过selenium打开页面进行登录,模拟用户购票流程自动购票
其流程图如下:
准备工作
1. 配置环境
1.1安装python3环境
Windows
- 访问Python官方网站:https://www.python.org/downloads/windows/
- 下载最新的Python 3.9+版本的安装程序。
- 运行安装程序。
- 在安装程序中,确保勾选 “Add Python X.X to PATH” 选项,这将自动将Python添加到系统环境变量中,方便在命令行中使用Python。
- 完成安装后,你可以在命令提示符或PowerShell中输入
python3来启动Python解释器。
macOS
-
你可以使用Homebrew来安装Python 3。
-
安装Homebrew(如果未安装):打开终端并运行以下命令:
1/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
安装Python 3:运行以下命令来安装Python 3:
1brew install python@3
-
1.2 安装所需要的环境
在命令窗口输入如下指令
|
|
1.3 下载google chrome浏览器
2. 修改配置文件
在运行程序之前,需要先修改config.json文件。该文件用于指定用户需要抢票的相关信息,包括演唱会的场次、观演的人员、城市、日期、价格等。文件结果如下图所示:
2.1 文件内容说明
index_url为大麦网的地址,无需修改login_url为大麦网的登录地址,无需修改target_url为用户需要抢的演唱会票的目标地址,待修改users为观演人的姓名,观演人需要用户在手机大麦APP中先填写好,然后再填入该配置文件中,待修改city为城市,如果用户需要抢的演唱会票需要选择城市,请把城市填入此处。如无需选择,则不填date为场次日期,待修改,可多选price为票档的价格,待修改,可多选if_commit_order为是否要自动提交订单,改成 true- if_listen为是否回流监听,改成true
2.2 示例说明
进入大麦网https://www.damai.cn/,选择你需要抢票的演唱会。假设如下图所示:
接下来按照下图的标注对配置文件进行修改:
最终config.json的文件内容如下:
|
|
3.运行程序
运行程序开始抢票,进入命令窗口,执行如下命令:
|
|
大麦app抢票
大麦app抢票脚本需要依赖appium,因此需要现在安装appium server&client环境,步骤如下:
appium server
下载
-
先安装好node环境(具备npm)node版本号18.0.0
-
先下载并安装好android sdk,并配置环境变量(appium server运行需依赖android sdk)
-
下载appium
1npm install -g appium -
查看appium是否安装成功
1appium -v -
下载UiAutomator2驱动
1npm install appium-uiautomator2-driver
可能会遇到如下错误:
|
|
解决办法(添加环境变量,错误原因是没有找到chrome浏览器驱动,忽略即可)
|
|
启动
启动appium server并使用uiautomator2驱动
|
|
启动成功将出现如下信息:
|
|
其中[Appium] http://127.0.0.1:4723/ (only accessible from the same host) [Appium] http://172.31.102.45:4723/ [Appium] http://198.18.0.1:4723/为appium server连接地址
appium client
-
先下载并安装好python3和pip3
-
安装
1pip3 install appium-python-client -
在代码中引入并使用appium
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17from 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) -
启动脚本程序
1 2cd damai_appium python3 damai_appium.py