No Description

Taio_O 8cd189206e 移除测试文件 2 weeks ago
config 6335594577 first commit 2 weeks ago
go-speed-test 6335594577 first commit 2 weeks ago
public 6335594577 first commit 2 weeks ago
src 34865b3b55 机器人发送测试总结报告 2 weeks ago
.gitignore 6335594577 first commit 2 weeks ago
README.md 6335594577 first commit 2 weeks ago
env.example 6335594577 first commit 2 weeks ago
package-lock.json 6335594577 first commit 2 weeks ago
package.json 6335594577 first commit 2 weeks ago
start.js 6335594577 first commit 2 weeks ago

README.md

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. 安装依赖

npm install

3. 配置环境变量

复制 env.example.env 并修改配置:

cp env.example .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. 创建数据库

CREATE DATABASE clash_speed_test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

5. 运行数据库迁移

npm run migrate

6. 启动应用

# 开发模式
npm run dev

# 生产模式
npm start

API接口

节点管理

  • GET /api/nodes - 获取节点列表
  • GET /api/nodes/:id - 获取节点详情
  • POST /api/nodes - 创建节点
  • PUT /api/nodes/:id - 更新节点
  • DELETE /api/nodes/:id - 删除节点

配置导入

  • POST /api/import/clash - 导入Clash配置

订阅管理

  • POST /api/subscription/update - 手动更新订阅
  • GET /api/subscription/status - 获取订阅状态

测试管理

  • POST /api/test/manual - 手动触发测试
  • GET /api/test/results - 获取测试结果

通知管理

  • GET /api/notifications - 获取通知列表
  • POST /api/notifications/test - 测试通知连接

统计信息

  • GET /api/stats - 获取统计信息
  • GET /api/status - 获取系统状态

使用说明

1. 创建Telegram机器人

  1. 在Telegram中搜索 @BotFather
  2. 发送 /newbot 创建新机器人
  3. 获取Bot Token
  4. 将机器人添加到目标群组或频道
  5. 获取Chat ID

快速获取Chat ID:

npm run get-chat-id

测试机器人功能:

npm run test-telegram

2. 导入Clash配置

# 通过API导入
curl -X POST http://localhost:3000/api/import/clash \
  -H "Content-Type: application/json" \
  -d '{
    "configPath": "/path/to/your/clash/config.yaml"
  }'

# 或通过URL导入
curl -X POST http://localhost:3000/api/import/clash \
  -H "Content-Type: application/json" \
  -d '{
    "configUrl": "https://example.com/clash-config.yaml"
  }'

3. 订阅管理

# 手动更新订阅
curl -X POST http://localhost:3000/api/subscription/update

# 获取订阅状态
curl -X GET http://localhost:3000/api/subscription/status

4. 手动测试

# 测试所有节点
curl -X POST http://localhost:3000/api/test/manual

# 测试指定节点
curl -X POST http://localhost:3000/api/test/manual \
  -H "Content-Type: application/json" \
  -d '{
    "nodeIds": [1, 2, 3]
  }'

项目结构

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部署

FROM node:16-alpine

WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

PM2部署

npm install -g pm2
pm2 start src/app.js --name clash-speed-test
pm2 save
pm2 startup

监控和维护

日志查看

# 查看应用日志
tail -f logs/combined.log

# 查看错误日志
tail -f logs/error.log

数据清理

系统会自动清理:

  • 30天前的测试结果
  • 7天前的已发送通知

性能优化

  • 数据库索引已自动创建
  • 测试结果分页查询
  • 并发测试限制

故障排除

常见问题

  1. 数据库连接失败

    • 检查数据库配置
    • 确保数据库服务运行
  2. Telegram通知失败

    • 检查Bot Token和Chat ID
    • 确保机器人有发送消息权限
  3. 节点测试失败

    • 检查网络连接
    • 验证节点配置正确性

调试模式

NODE_ENV=development npm run dev

贡献

欢迎提交Issue和Pull Request!

许可证

MIT License