feat: Web管理系统 + Docker支持

- 多账号管理(异步登录、状态轮询)
- 购物车预售商品同步(倒计时/定时开售)
- 定时抢购(自动刷新、SKU选择、重试机制)
- 账号隔离调度(同账号顺序、跨账号并行)
- Web面板(任务分组、实时倒计时、批量操作)
- Dockerfile + docker-compose
This commit is contained in:
2026-03-18 13:38:17 +08:00
parent 7aea2ca2a8
commit 822a4636c0
28 changed files with 1966 additions and 66 deletions

View File

@@ -1,43 +1,58 @@
# Weidian Snatch (微店抢购脚本)
# 微店抢购管理系统
这是一个基于 [Playwright](https://playwright.dev/) 的微店自动抢购工具,支持精确计时、自动登录、隐身模式等功能
基于 Playwright + Flask 的微店自动抢购工具,提供 Web 管理界面,支持多账号、购物车同步、定时抢购
## 功能特性
## 功能
- **自动登录**:支持保存和加载登录状态 (`auth_state.json`)。
- **精确计时**:内置 `PrecisionTimer` 进行时间同步和倒计时等待。
- **隐身模式**:使用 stealth 脚本隐藏自动化特征,降低防爬虫检测风险。
- **自动抢购**自动执行点击购买、确认规格SKU、提交订单的流程。
- **多账号管理** — 添加账号后台自动登录状态实时轮询
- **购物车同步** — 自动识别预售商品(倒计时 / 定时开售),一键创建抢购任务
- **定时抢购** — 精确计时,到点自动刷新 → 点击购买 → 选 SKU → 提交订单,支持重试
- **账号隔离** — 同账号任务顺序执行,不同账号并行,互不干扰
- **Web 面板** — 任务按账号分组,实时倒计时,一键启动 / 停止
## 文件结构
## 快速开始
- `main.py`: 主程序入口,包含抢购的核心逻辑。
- `config.yaml`: 配置文件,设置商品链接、抢购时间、浏览器模式等。
- `resolve_url.py`: URL 解析工具(如果有)。
- `utils/`:
- `auth.py`: 处理用户认证和 Session 管理。
- `stealth.py`: 反爬虫隐身处理。
- `timer.py`: 时间同步与控制。
### 本地运行
## 使用方法
```bash
pip install -r requirements.txt
playwright install chromium
python run.py
```
1. **安装依赖**
请确保已安装 Python并安装所需的库
```bash
pip install playwright pyyaml
playwright install
```
访问 http://localhost:9000
2. **配置 config.yaml**
修改 `config.yaml` 文件,填入目标商品 URL (`target_url`) 和抢购时间 (`snatch_time`)。
### Docker 运行
3. **运行脚本**
```bash
python main.py
```
如果是首次运行且无登录状态,脚本会提示登录。请手动登录后,脚本会自动保存状态供下次使用
```bash
docker compose up -d
```
数据持久化在 `./data` 目录SQLite 数据库 + 登录态文件)
## 项目结构
```
├── run.py # 启动入口
├── main.py # 独立抢购脚本(命令行模式)
├── config.yaml # 命令行模式配置
├── server/
│ ├── app.py # Flask 应用
│ ├── database.py # SQLite 数据库
│ ├── routers/ # 路由accounts / tasks / orders
│ └── services/
│ ├── snatcher.py # 抢购核心逻辑
│ ├── cart_service.py # 购物车预售商品抓取
│ ├── scheduler.py # 任务调度(按账号隔离)
│ └── auth_service.py # 登录态管理
├── templates/ # Jinja2 页面模板
├── utils/ # 工具stealth / timer / auth
├── Dockerfile
└── docker-compose.yml
```
## 注意事项
- 请确保网络畅通,以保证时间同步和抢购请求的及时发送。
- 抢购成功率受多种因素影响(网络延迟、库存数量、平台风控等),本脚本仅辅助操作,不保证 100% 成功。
- 抢购成功率受网络延迟、库存、平台风控等因素影响,本工具仅辅助操作
- SKU 选择器的 CSS 类名基于当前微店 H5 页面结构,如页面改版可能需要调整
- Docker 容器内以 headless 模式运行 Chromium