Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

WECENG/ticket-purchase

Repository files navigation

大麦抢票自动化系统

一个基于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 <repository-url>
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": "http://127.0.0.1:4723",
 "keyword": "刘若英",
 "users": [
 "观演人1",
 "观演人2"
 ],
 "city": "泉州",
 "date": "10.04",
 "price": "799元",
 "price_index": 1,
 "if_commit_order": true
}

配置参数说明

参数 类型 说明 示例
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)

{
 "index_url": "https://www.damai.cn/",
 "login_url": "https://passport.damai.cn/login",
 "target_url": "https://detail.damai.cn/item.htm?id=xxx",
 "users": ["张三", "李四"],
 "city": "广州",
 "date": "2023年10月28日",
 "price": "1039",
 "if_commit_order": true
}

🚀 使用方法

移动端抢票(推荐)

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 # 说明文档

🎯 使用流程

移动端抢票完整流程

  1. 环境准备

    • 安装Node.js (20.19.0+)
    • 安装Appium和驱动
    • 配置Android SDK环境变量
  2. 设备准备

    • 启动Android模拟器或连接真机
    • 安装大麦APP并登录
  3. 配置参数

    • 编辑 config.jsonc 文件
    • 设置演出信息、观演人员等
  4. 启动服务

    • 启动Appium服务器
    • 验证设备连接
  5. 执行抢票

    • 在模拟器上打开大麦APP
    • 搜索目标演出
    • 运行抢票脚本
  6. 监控结果

    • 脚本自动执行抢票流程
    • 查看控制台输出
    • 检查订单状态

⚠️ 注意事项

  1. 合法使用:请遵守大麦网的使用条款,合理使用自动化工具
  2. 账号安全:建议使用专门的测试账号
  3. 网络环境:确保网络连接稳定
  4. 设备性能:建议使用性能较好的设备进行抢票
  5. 时间设置:提前设置好抢票时间,确保脚本在开售时间运行

🤝 贡献指南

欢迎提交Issue和Pull Request来改进项目。

📄 许可证

本项目仅供学习和研究使用,请勿用于商业用途。


最后更新: 2024年10月 版本: 2.0.0

About

大麦自动抢票,支持人员、城市、日期场次、价格选择

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

AltStyle によって変換されたページ (->オリジナル) /