# 脚本 **Repository Path**: lly3314/script ## Basic Information - **Project Name**: 脚本 - **Description**: 测试测试测出水水水水是 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-23 - **Last Updated**: 2026-04-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 多用户批量抢购系统 v2 支持多用户、高并发、高精度定时的抢购模拟系统。 ## 功能特性 - ✅ **多用户批量处理**: 同时处理多个用户的抢购任务 - ✅ **生产者 - 消费者模式**: 任务队列调度,解耦配置和执行 - ✅ **高精度定时**: 两阶段等待(粗调 + 精调),精度达微秒级 - ✅ **延迟优化**: NTP 时间同步、RTT 补偿、连接预热 - ✅ **并发请求**: 异步 IO + 多线程,支持高并发 - ✅ **结果报告**: JSON/CSV 格式报告,按用户分目录日志 ## 目录结构 ``` v2_batch_version/ ├── main.py # 主程序入口 ├── models.py # 数据模型定义 ├── config_manager.py # 配置管理 ├── task_scheduler.py # 任务调度器(生产者) ├── worker_pool.py # 工作线程池(消费者) ├── executor.py # 单用户执行器 ├── reporter.py # 结果报告器 ├── user_configs/ # 用户配置目录 │ ├── template.json # 配置模板 │ └── user1_example.json # 示例配置 ├── logs/ # 日志目录 └── reports/ # 报告目录 ``` ## 快速开始 ### 1. 安装依赖 ```bash pip install aiohttp ntplib ``` ### 2. 准备配置 在 `user_configs/` 目录下创建配置文件: ```bash cd user_configs copy template.json user1.json ``` 编辑 `user1.json`,填入你的配置: - `cookie`: 从浏览器开发者工具复制 - `xsrf_token`: 从 cookie 中的 `buy_api_csrf_token` 提取 - `request_body`: 请求体 JSON - `target_hour/minute/second/millisecond`: 目标时间 - `thread_num/concurrent_per_thread`: 并发配置 ### 3. 运行程序 ```bash cd v2_batch_version python main.py ``` ## 命令行参数 ```bash # 正常模式(从配置文件加载) python main.py # 从 fetch 文件导入 python main.py --import fetch_data.txt # 显示帮助 python main.py --help ``` ## 配置说明 ### 配置字段 | 字段 | 说明 | 默认值 | |------|------|--------| | user_id | 用户标识 | 必填 | | cookie | 浏览器 Cookie | 必填 | | xsrf_token | CSRF Token | 必填 | | request_body | 请求体 JSON | 必填 | | target_hour | 目标小时 (0-23) | 0 | | target_minute | 目标分钟 (0-59) | 0 | | target_second | 目标秒数 (0-59) | 0 | | target_millisecond | 目标毫秒 (0-999) | 0 | | thread_num | 线程数 | 2 | | concurrent_per_thread | 每线程并发数 | 10 | | priority | 优先级 (0-9) | 0 | ### 获取 Cookie 和 Request Body 1. 打开浏览器开发者工具(F12) 2. 进入 Network 标签 3. 找到抢购相关的 fetch 请求 4. 右键复制请求为 cURL 或复制完整内容 5. 提取 `cookie`、`body` 字段 ### 从浏览器复制 fetch 数据 在浏览器 Console 中执行: ```javascript copy(JSON.stringify({ cookie: document.cookie, headers: {...}, body: '...' })) ``` ## 输出说明 ### 控制台输出 ``` ============================================================ 🚀 多用户批量抢购系统启动 ============================================================ 📂 加载用户配置... ✅ 已加载 3 个用户配置 📋 添加任务到调度队列... ✅ 任务已添加:task_user1_20260322100000_0001 用户:user1 执行时间:2026-03-23 10:00:00.000 🔧 启动工作线程池... ✅ 工作线程池已启动,线程数:3 ⏳ 等待任务执行... ``` ### 日志文件 - `logs/system_*.log`: 系统日志 - `logs/users/*.log`: 按用户分日志 - `reports/*/`.json`: 详细结果 - `reports/summary_*.json`: 汇总报告 - `reports/export_*.csv`: CSV 格式报告 ## 延迟优化说明 系统包含以下延迟优化: | 优化手段 | 可降低延迟 | 说明 | |----------|------------|------| | NTP 时间同步 | 10-100ms | 与标准时间对齐 | | RTT 预补偿 | 10-50ms | 提前 RTT/2 发送 | | 连接预热 | 50-200ms | 提前建立 TCP 连接 | | 高精度定时 | 1-10ms | 空转等待,微秒级精度 | | 多线程并发 | 提高成功率 | 同时发送多个请求 | **综合优化后**: 可将总延迟控制在 **±5ms** 以内 ## 注意事项 1. **配置安全**: 不要将包含真实 Cookie 的配置文件上传到公开仓库 2. **时间同步**: 建议使用 NTP 同步系统时间 3. **并发限制**: 根据网络情况调整并发数,避免请求失败 4. **测试运行**: 正式使用前建议先测试 ## 故障排除 ### 问题 1: 配置文件加载失败 检查 JSON 格式是否正确,确保所有必填字段都存在。 ### 问题 2: 任务执行失败 查看 `logs/users/.log` 获取详细错误信息。 ### 问题 3: 时间不准确 确保系统时间正确,或启用 NTP 同步。 ## 扩展开发 ### 添加新的执行策略 继承 `SingleUserExecutor` 类,重写 `_async_execute` 方法。 ### 添加新的报告格式 在 `Reporter` 类中添加新的导出方法。 ## License MIT