# Clash节点测速工具 一个基于Node.js的Clash节点测速工具,支持定时监控、Telegram通知和自动订阅更新。 ## 功能特性 - 🔄 **定时测速**: 每15分钟自动测试所有节点 - 📊 **多维度测试**: 延迟、速度、连接性测试 - 🔔 **智能通知**: Telegram机器人故障和恢复通知 - 📈 **数据统计**: 详细的测试历史和性能统计 - 🌐 **API接口**: 完整的RESTful API - 📁 **配置导入**: 支持Clash配置文件导入 - 🔄 **自动订阅**: 支持订阅地址自动更新节点 - 🗄️ **数据持久化**: MySQL数据库存储 ## 技术栈 - **后端**: Node.js + Express - **数据库**: MySQL + Sequelize ORM - **定时任务**: node-cron - **通知**: Telegram Bot API - **日志**: Winston - **配置解析**: YAML ## 快速开始 ### 1. 环境要求 - Node.js 16+ - MySQL 8.0+ - 可访问的Telegram Bot Token ### 2. 安装依赖 ```bash npm install ``` ### 3. 配置环境变量 复制 `env.example` 为 `.env` 并修改配置: ```bash cp env.example .env ``` ```env # 数据库配置 DB_HOST=localhost DB_PORT=3306 DB_NAME=clash_speed_test DB_USER=root DB_PASSWORD=your_password # Telegram机器人配置 TELEGRAM_BOT_TOKEN=7804040067:AAFeV7WeCWHUJTJzLUnN83C0Wid0pGSj6NQ TELEGRAM_CHAT_ID=your_chat_id # 应用配置 PORT=3000 NODE_ENV=development # Clash配置 CLASH_CONFIG_PATH=./config/clash_config.yaml CLASH_API_URL=http://127.0.0.1:9090 CLASH_SUBSCRIPTION_URL=http://so.xfxssr.me/api/v1/client/subscribe?token=7854d59f38ac51700730b9e782c5160c # 测速配置 SPEED_TEST_INTERVAL=15 SPEED_TEST_TIMEOUT=10000 SPEED_TEST_URLS=https://www.google.com,https://www.youtube.com,https://www.github.com # 通知配置 NOTIFICATION_FAILURE_THRESHOLD=3 NOTIFICATION_RECOVERY_THRESHOLD=2 ``` ### 4. 创建数据库 ```sql CREATE DATABASE clash_speed_test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ### 5. 运行数据库迁移 ```bash npm run migrate ``` ### 6. 启动应用 ```bash # 开发模式 npm run dev # 生产模式 npm start ``` ## 使用说明 ### 1. 创建Telegram机器人 1. 在Telegram中搜索 `@BotFather` 2. 发送 `/newbot` 创建新机器人 3. 获取Bot Token 4. 将机器人添加到目标群组或频道 5. 获取Chat ID **快速获取Chat ID:** ```bash npm run get-chat-id ``` **测试机器人功能:** ```bash npm run test-telegram ``` ### 2. 使用Web界面 启动应用后,在浏览器中访问 `http://localhost:3000` 即可使用Web界面进行: - 节点管理 - 配置导入 - 订阅管理 - 手动测试 - 查看测试结果 - 通知设置 ## 项目结构 ``` speed-test/ ├── src/ │ ├── api/ # API路由 │ ├── config/ # 配置文件 │ ├── core/ # 核心功能 │ ├── database/ # 数据库相关 │ ├── models/ # 数据模型 │ └── utils/ # 工具函数 ├── logs/ # 日志文件 ├── config/ # 配置文件目录 ├── package.json ├── env.example └── README.md ``` ## 配置说明 ### 测速配置 - `SPEED_TEST_INTERVAL`: 测速间隔(分钟) - `SPEED_TEST_TIMEOUT`: 测试超时时间(毫秒) - `SPEED_TEST_URLS`: 测试目标网站(逗号分隔) ### 通知配置 - `NOTIFICATION_FAILURE_THRESHOLD`: 故障通知阈值 - `NOTIFICATION_RECOVERY_THRESHOLD`: 恢复通知阈值 ### 订阅配置 - `CLASH_SUBSCRIPTION_URL`: Clash订阅地址 - `SUBSCRIPTION_UPDATE_INTERVAL`: 订阅更新间隔(毫秒) ## 部署 ### Docker部署 ```dockerfile FROM node:16-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . EXPOSE 3000 CMD ["npm", "start"] ``` ### PM2部署 ```bash npm install -g pm2 pm2 start src/app.js --name clash-speed-test pm2 save pm2 startup ``` ## 监控和维护 ### 日志查看 ```bash # 查看应用日志 tail -f logs/combined.log # 查看错误日志 tail -f logs/error.log ``` ### 数据清理 系统会自动清理: - 30天前的测试结果 - 7天前的已发送通知 ### 性能优化 - 数据库索引已自动创建 - 测试结果分页查询 - 并发测试限制 ## 故障排除 ### 常见问题 1. **数据库连接失败** - 检查数据库配置 - 确保数据库服务运行 2. **Telegram通知失败** - 检查Bot Token和Chat ID - 确保机器人有发送消息权限 3. **节点测试失败** - 检查网络连接 - 验证节点配置正确性 ### 调试模式 ```bash NODE_ENV=development npm run dev ``` ## 贡献 欢迎提交Issue和Pull Request! ## 许可证 MIT License