No Description

Taio_O 087ceadf58 添加订阅链接名字,测速方式选择按钮 6 days ago
config 6335594577 first commit 2 weeks ago
go-speed-test 24706f2f54 测速功能优化,新增重测功能 1 week ago
public 90fa5d311c 其他类型的节点识别,分组测试和发送订阅报告 1 week ago
src 087ceadf58 添加订阅链接名字,测速方式选择按钮 6 days ago
.gitignore 6335594577 first commit 2 weeks ago
BOT_USAGE.md 90fa5d311c 其他类型的节点识别,分组测试和发送订阅报告 1 week ago
PING_REFACTOR.md aeb6375cd4 引入tcp-ping库,重写ping功能 1 week ago
README.md b0274d87bf 移除部分日志 1 week ago
debug.js 55527af16b 解析订阅链接 1 week ago
env.example 8a4de49dbf 初步连接机器人 1 week ago
package-lock.json aeb6375cd4 引入tcp-ping库,重写ping功能 1 week ago
package.json aeb6375cd4 引入tcp-ping库,重写ping功能 1 week ago
start.js b0274d87bf 移除部分日志 1 week ago
test-comprehensive.js 4bbc41c1d0 新增并发和串行测试 6 days ago
test-fixes.js 4bbc41c1d0 新增并发和串行测试 6 days 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

使用说明

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. 使用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部署

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