# 大麦抢票自动化系统
一个基于Selenium和Appium的大麦网抢票自动化工具,支持Web端和移动端抢票。
🚀 功能特性
- 双端支持:支持Web端(Selenium)和移动端(Appium)抢票
- 智能抢票:自动选择城市、票价、观演人员
- 高性能:优化的点击策略,适合抢票场景
- 可配置:灵活的配置文件,支持多种演出设置
- 重试机制:内置重试逻辑,提高成功率
📋 系统要求
基础环境
- Python: 3.9+
- Node.js: 20.19.0+ 或 22.12.0+ 或 24.0.0+
- 操作系统: macOS / Windows / Linux
Web端抢票
- Chrome浏览器: 最新版本
- ChromeDriver: 自动下载
移动端抢票
- Android SDK: 已配置环境变量
- Appium: 3.1.0+
- Android设备: 真机或模拟器
🛠️ 安装指南
1. 克隆项目
git clone
cd ticket-purchase
2. 安装Python依赖
# 使用Poetry(推荐) poetry install # 或使用pip pip install -r requirements.txt
3. 移动端环境配置(仅移动端抢票需要)
3.1 安装Node.js
# macOS (使用Homebrew) brew install node # 验证版本(需要20.19.0+) node --version
3.2 安装Appium
# 全局安装Appium npm install -g appium # 安装UiAutomator2驱动 appium driver install uiautomator2 # 验证安装 appium --version
3.3 配置Android环境
# 设置环境变量(添加到 ~/.zshrc 或 ~/.bashrc) export ANDROID_HOME=/path/to/your/android/sdk export ANDROID_SDK_ROOT=/path/to/your/android/sdk # 验证ADB adb devices
⚙️ 配置说明
移动端配置 (config.jsonc)
配置参数说明
| 参数 | 类型 | 说明 | 示例 |
|---|---|---|---|
server_url |
string | Appium服务器地址 | "http://127.0.0.1:4723" |
keyword |
string | 搜索关键词 | "刘若英" |
users |
array | 观演人员名单 | ["张三", "李四"] |
city |
string | 演出城市 | "泉州" |
date |
string | 演出日期 | "10.04" |
price |
string | 票价描述 | "799元" |
price_index |
number | 票价索引(从0开始) | 1 |
if_commit_order |
boolean | 是否自动提交订单 | true |
Web端配置 (config.json)
🚀 使用方法
移动端抢票(推荐)
1. 启动Android设备
# 启动模拟器 /Users/shengwang/Library/Android/sdk/emulator/emulator -avd YourAVDName # 或连接真机(需开启USB调试) adb devices
2. 安装大麦APP
在Android设备上安装大麦APP,并登录账号。
3. 启动Appium服务器
# 设置环境变量 export ANDROID_HOME=/Users/shengwang/Library/Android/sdk export ANDROID_SDK_ROOT=/Users/shengwang/Library/Android/sdk # 启动Appium服务器 appium --port 4723
4. 配置抢票参数
编辑 damai_appium/config.jsonc 文件,设置:
- 搜索关键词
- 观演人员
- 城市、日期、票价
- 其他参数
5. 运行抢票脚本
cd damai_appium ANDROID_HOME=/Users/shengwang/Library/Android/sdk ANDROID_SDK_ROOT=/Users/shengwang/Library/Android/sdk python damai_app_v2.py
Web端抢票
1. 配置参数
编辑 damai/config.json 文件,设置目标演出URL和其他参数。
2. 运行抢票脚本
cd damai python damai.py
🔧 故障排除
常见问题
1. Node.js版本不兼容
Error: Node version must be at least ^20.19.0 || ^22.12.0 || >=24.0.0
解决方案:升级Node.js到兼容版本
# macOS brew upgrade node
2. Android环境变量未设置
Error: Neither ANDROID_HOME nor ANDROID_SDK_ROOT environment variable was exported
解决方案:设置环境变量
export ANDROID_HOME=/path/to/android/sdk export ANDROID_SDK_ROOT=/path/to/android/sdk
3. 设备连接问题
Error: Unable to find an active device or emulator
解决方案:
- 检查设备连接:
adb devices - 确保设备已开启USB调试
- 检查Android版本是否匹配
4. Appium连接失败
Error: Connection refused
解决方案:
- 确保Appium服务器正在运行
- 检查端口4723是否被占用
- 验证服务器地址配置
调试技巧
1. 检查设备状态
# 检查连接的设备 adb devices # 检查设备Android版本 adb shell getprop ro.build.version.release # 检查设备是否完全启动 adb shell getprop sys.boot_completed
2. 验证Appium连接
# 检查Appium服务器状态 curl http://127.0.0.1:4723/status
3. 查看应用包名
# 查看已安装的应用 adb shell pm list packages | grep damai
📁 项目结构
ticket-purchase/ ├── damai/ # Web端抢票 │ ├── damai.py # 主程序 │ ├── config.py # 配置类 │ ├── config.json # 配置文件 │ └── requirements.txt # 依赖文件 ├── damai_appium/ # 移动端抢票 │ ├── damai_app_v2.py # 优化版主程序 │ ├── damai_app.py # 原版主程序 │ ├── config.py # 配置类 │ ├── config.jsonc # 配置文件 │ └── app.md # 应用说明 ├── tests/ # 测试文件 ├── doc/ # 文档 ├── img/ # 图片资源 └── README.md # 说明文档
🎯 使用流程
移动端抢票完整流程
- 环境准备
- 安装Node.js (20.19.0+)
- 安装Appium和驱动
- 配置Android SDK环境变量
- 设备准备
- 启动Android模拟器或连接真机
- 安装大麦APP并登录
- 配置参数
- 编辑
config.jsonc文件 - 设置演出信息、观演人员等
- 编辑
- 启动服务
- 启动Appium服务器
- 验证设备连接
- 执行抢票
- 在模拟器上打开大麦APP
- 搜索目标演出
- 运行抢票脚本
- 监控结果
- 脚本自动执行抢票流程
- 查看控制台输出
- 检查订单状态
⚠️ 注意事项
- 合法使用:请遵守大麦网的使用条款,合理使用自动化工具
- 账号安全:建议使用专门的测试账号
- 网络环境:确保网络连接稳定
- 设备性能:建议使用性能较好的设备进行抢票
- 时间设置:提前设置好抢票时间,确保脚本在开售时间运行
🤝 贡献指南
欢迎提交Issue和Pull Request来改进项目。
📄 许可证
本项目仅供学习和研究使用,请勿用于商业用途。
最后更新: 2024年10月 版本: 2.0.0
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/281369.html