本项目仅供学习和技术交流使用,请务必遵守以下条款:
- 合法合规使用:本工具仅用于学习 Selenium 和 Appium 自动化技术,请勿用于任何商业用途或违反服务条款的行为
- 风险自负:使用本工具可能存在账号被封禁、订单异常等风险,使用者需自行承担所有后果
- 尊重平台规则:请严格遵守大麦网的用户协议和服务条款,不得进行恶意刷票或影响平台正常运营的行为
- 技术研究目的:本项目主要用于研究移动端和网页自动化技术,不鼓励大规模或商业化使用
- 免责条款:开发者不对使用本工具造成的任何损失承担责任,包括但不限于账号封禁、财产损失等
使用本工具即表示您已阅读并同意上述免责声明。如不同意,请立即停止使用。
一个功能完善的大麦网自动抢票工具,提供 App 模式(手机端极速冲刺) 和 Web 模式(PC 浏览器) 两种方案。
| App 模式 | Web 模式 |
|---|---|
![]() |
![]() |
采用 双阶段架构:预热进入选票页 → 极速坐标盲点冲刺。
| 阶段 | 说明 | 耗时 |
|---|---|---|
| 预热 preheat() | 连接 Appium → 搜索演出 → 进入选票页 → 预选场次/票价/数量 → 记录按钮坐标 | 开售前完成 |
| 冲刺 sprint() | CPU 自旋等到开售瞬间 → 坐标盲点确认 → 坐标盲点提交 → 进入付款页 | 每轮 ~30ms |
- 坐标盲点:纯粹
mobile: clickGesture注入触摸事件,零find_element、零WebDriverWait、零time.sleep - Activity 检测:
driver.current_activity判断页面跳转,每次仅 5-15ms - 同一坐标打穿两页:确认和提交按钮都在底部同区域,一套坐标点到底
- 自动降级:坐标盲点 30s 无响应 → 自动回退
find_element元素查找兜底 - 预热失败不影响流程:自动回退到传统元素查找模式
- 一键式操作 - 简单易用的图形界面
- 智能登录管理 - Cookie 自动保存,免重复登录
- 参数化配置 - 可视化填写目标 URL、城市、日期、价格
- 实时日志显示 - 清晰显示抢票进度和状态
- 统一配置管理 - App/Web 共用同一配置文件
config.json
- Cookie 持久化 - 登录状态自动保存到
damai_cookies.pkl - 免重复登录 - 启动时自动加载 Cookie
- 手动管理选项 - 可手动清除登录状态
⚠️ damai_cookies.pkl不会自动随网页退出登录而更新,需手动清除后重新登录
- 启动 v2 GUI:
python start_gui_v2.pyw - 确认模式为 App,点击 检测环境
- 填写 Appium 服务地址、点击 刷新设备
- 填写 抢票参数(关键词、城市、场次/票价索引、数量)
- 在 定时抢票 中设置 开抢时间,点击 预约开抢
- 等待倒计时 → 自动预热 → 到点冲刺
CLI 方式:
cd damai_appium && python damai_app_v2.py --start-at "2025-10-01 20:00:00" --warmup-sec 120
- 启动 v2 GUI:
python start_gui_v2.pyw - 切换为 Web 模式
- 输入 目标 URL(大麦网演出详情页)
- 填写关键词、城市、选择日期
- 点击 开始抢票 → 首次使用需扫码登录
- Cookie 自动保存,后续免登录
- Python 3.7+
- Node.js + Appium(App 模式需要)
- Android 设备(App 模式需要,支持真机或模拟器)
- Chrome 浏览器 + ChromeDriver(Web 模式需要)
- 依赖安装:
pip install -r requirements.txt
# 创建虚拟环境(推荐)
python -m venv venv
.\venv\Scripts\Activate.ps1
# 安装项目依赖
python -m pip install -U pip
pip install -r requirements.txtnpm install -g appium
npm install -g appium-doctor
appium-doctor --android- 下载 Android Platform Tools,将
platform-tools目录加入系统 PATH - 参考:https://developer.android.com/tools/releases/platform-tools
where adb
adb version
appium -vappium --address 0.0.0.0 --port 4723 --relaxed-securityadb devices -l
# 若显示 unauthorized,请在手机上确认 USB 调试授权.\venv\Scripts\python.exe start_gui_v2.pywdamai-ticket-assistant/
├── start_gui.pyw # v1 GUI 启动入口(旧版,保留)
├── start_gui_v2.pyw # v2 GUI 启动入口(新版,推荐)
├── damai_gui.py # v1 GUI 主窗口(旧版)
├── damai_gui_v2.py # v2 GUI 主窗口(新版,CustomTkinter)
├── config.json # App/Web 共用配置文件
├── requirements.txt # Python 依赖
│
├── damai_web/ # Web 模式(Selenium)
│ └── concert.py # WebConcert 后端
│
├── damai_appium/ # App 模式(Appium)
│ ├── runner.py # 核心:preheat() + sprint()
│ ├── damai_app_v2.py # CLI 入口
│ ├── config.py # AppTicketConfig 配置模型
│ └── config.json # 旧版配置文件(向后兼容)
│
├── comment/ # GUI 自定义组件
│ ├── countdown_timer.py
│ ├── datetime_picker.py
│ ├── ant_button.py
│ └── date_picker_ctk.py # CustomTkinter 日期选择器
│
├── assets/themes/
│ └── damai.json # CustomTkinter 主题文件
│
├── docs/guides/
│ ├── APP_MODE_README.md # App 模式详细文档
│ ├── WEB_MODE_README.md # Web 模式详细文档
│ ├── app_image.png
│ └── web_image.png
│
└── venv/ # Python 虚拟环境
- App 模式流程结束后自动汇总尝试次数、重试次数、总耗时与最终阶段
- GUI 日志面板支持过滤和导出 JSON 报告
- CLI
--export-report参数可生成 JSON 报告
- 多种购买按钮识别策略
- 观演人选择区域智能定位
- 提交按钮文本智能匹配
- 坐标盲点 → 元素查找,两层兜底
- JavaScript 辅助执行
- 详细的日志信息
- 双阶段架构:预热(preheat)提前完成所有元素查找和坐标采集,冲刺(sprint)零查找纯坐标盲点
_spin_wait()CPU 自旋等待开售时刻,大段时间 sleep 省 CPU,最后 1 秒纯自旋无等待_fire_tap()直接注入mobile: clickGesture触摸事件,单次点击 5ms duration_sprint_phase_confirm()/_sprint_phase_submit()每轮 20-65ms,activity 即时检测跳转- 每 200 次坐标校准:
find_element获取按钮最新位置 - 30s 超时自动降级到
_confirm_purchase()/_submit_order()元素查找模式
- 基于 CustomTkinter 的现代化界面
- 暗/亮主题切换
- 卡片式布局,支持区域折叠
- Ant Design 风格日期选择器
- 日志批量刷新(200ms 间隔),500 条上限
- 合规使用 - 请严格遵守大麦网服务条款
- 网络稳定 - 确保网络连接稳定可靠
- 信息准确 - 抢票前确认个人信息完整
- 理性使用 - 建议关闭自动提交,手动确认订单
- 风险意识 - 了解使用自动化工具的潜在风险
- 需手动支付 - 脚本到付款页即结束,不处理支付流程
本项目基于 redhat1977/damai-ticket-assistant-app 进行开发和优化。
特别感谢:
- 原作者 redhat1977 提供的优秀基础框架
- 所有为开源项目做出贡献的开发者们
- 提供建议和反馈的用户社区
欢迎提交 Issue 和 Pull Request 来改进项目:
- Fork 本仓库
- 创建您的特性分支 (
git checkout -b feature/AmazingFeature) - 提交您的更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启一个 Pull Request
本项目采用 MIT 协议开源,详情请参考 LICENSE 文件。
重要提醒: 本项目仅供学习和技术研究使用,请勿用于任何违反平台服务条款的行为。
如果遇到技术问题,可以:
- 📋 查看项目 Issues
- 📖 阅读详细文档和说明
- 💬 在仓库中提交新的 Issue
相关文档:
如果这个项目对您有帮助,请考虑:
- 🌟 给本项目一个 Star
- 🔄 Fork 并贡献代码
- 📢 分享给其他开发者
感谢您的支持! 🎉

