Taio_O f8ad4ac8a8 测速结果页面样式调整 2 hete
..
internal f8ad4ac8a8 测速结果页面样式调整 2 hete
templates 6335594577 first commit 2 hete
README.md 6335594577 first commit 2 hete
USAGE.md 6335594577 first commit 2 hete
config.yaml 6335594577 first commit 2 hete
go.mod 6335594577 first commit 2 hete
go.sum 6335594577 first commit 2 hete
main.go 6335594577 first commit 2 hete
run.bat 6335594577 first commit 2 hete
run.sh 6335594577 first commit 2 hete

README.md

Clash 测速工具 (Go版本)

这是一个用Go语言重写的Clash节点测速工具,相比Node.js版本具有更好的性能和更准确的测速结果。

主要改进

1. 更准确的测速

  • 真实速度测试: 使用1MB测试文件进行下载和上传速度测试
  • 延迟测试: 测试节点响应延迟
  • IP地址检测: 自动检测节点出口IP地址
  • 地理位置检测: 识别节点所在地区

2. 更完善的代理支持

  • HTTP/HTTPS代理: 直接支持
  • SOCKS5代理: 直接支持
  • 高级代理: 通过本地代理客户端(如Clash)支持Shadowsocks、Vmess、Trojan等

3. 更好的性能

  • 并发控制: 可配置的并发测试数量
  • 超时控制: 可配置的测试超时时间
  • 资源优化: 更高效的内存和网络使用

安装和运行

前置要求

  • Go 1.21 或更高版本
  • MySQL 数据库

1. 安装Go

# Windows
# 从 https://golang.org/dl/ 下载并安装

# Linux/Mac
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin

2. 配置数据库

CREATE DATABASE clash_speed_test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3. 配置应用

编辑 config.yaml 文件:

database:
  host: "localhost"
  port: 3306
  username: "your_username"
  password: "your_password"
  database: "clash_speed_test"

speed:
  test_urls:
    - "https://www.google.com"
    - "https://www.youtube.com"
    - "https://www.github.com"
  timeout: 10s
  concurrency: 5
  interval: 5m

4. 运行应用

Windows:

run.bat

Linux/Mac:

chmod +x run.sh
./run.sh

手动运行:

go mod tidy
go build -o clash-speed-test .
./clash-speed-test

功能特性

1. 自动测速

  • 定时测试所有活跃节点
  • 可配置测试间隔
  • 支持启动时立即测试

2. 详细结果

  • 延迟 (ms)
  • 下载速度 (Mbps)
  • 上传速度 (Mbps)
  • IP地址
  • 地理位置
  • 测试时间

3. 错误处理

  • 连接超时处理
  • 代理类型不支持处理
  • 网络错误重试

4. 日志记录

  • 详细的测试日志
  • 错误信息记录
  • 性能统计

API接口

获取测试结果

GET /api/results

获取节点列表

GET /api/nodes

手动触发测试

POST /api/test

高级代理测试

对于Shadowsocks、Vmess、Trojan等高级代理,需要:

  1. 安装Clash客户端
  2. 配置代理节点
  3. 启动HTTP代理服务
  4. 程序会自动检测本地代理端口

支持的本地代理端口:

  • 7890 (Clash默认)
  • 7891 (Clash SOCKS)
  • 1080 (通用SOCKS)
  • 8080 (通用HTTP)
  • 8118 (Privoxy)

配置说明

环境变量

# 数据库配置
export DB_HOST=localhost
export DB_PORT=3306
export DB_USER=root
export DB_PASS=password
export DB_NAME=clash_speed_test

# 测速配置
export SPEED_TEST_TIMEOUT=10s
export SPEED_TEST_INTERVAL=5m
export SPEED_TEST_CONCURRENCY=5

# 服务器配置
export PORT=3000

配置文件字段

  • server.port: HTTP服务器端口
  • server.host: HTTP服务器地址
  • database.*: 数据库连接配置
  • speed.test_urls: 测试URL列表
  • speed.timeout: 测试超时时间
  • speed.concurrency: 并发测试数量
  • speed.interval: 自动测试间隔
  • speed.test_on_start: 启动时是否立即测试
  • log.level: 日志级别
  • log.file: 日志文件路径

故障排除

1. 数据库连接失败

  • 检查数据库服务是否启动
  • 验证连接参数是否正确
  • 确认数据库用户权限

2. 代理测试失败

  • 检查代理服务器是否可访问
  • 验证代理配置是否正确
  • 确认网络连接正常

3. 高级代理无法测试

  • 确保Clash客户端正在运行
  • 检查本地代理端口是否开放
  • 验证代理配置是否正确

性能优化

1. 调整并发数

根据网络环境调整 speed.concurrency 参数:

  • 网络较好:5-10
  • 网络一般:3-5
  • 网络较差:1-3

2. 调整超时时间

根据节点响应速度调整 speed.timeout 参数:

  • 快速节点:5-10秒
  • 一般节点:10-15秒
  • 慢速节点:15-30秒

3. 优化测试URL

选择响应稳定的测试URL:

  • Google: 稳定性好,但可能被屏蔽
  • GitHub: 稳定性好,访问速度快
  • 自定义URL: 根据实际需求选择

开发说明

项目结构

go-speed-test/
├── main.go                 # 主程序入口
├── config.yaml            # 配置文件
├── go.mod                 # Go模块文件
├── go.sum                 # 依赖校验文件
├── internal/
│   ├── api/              # API接口
│   ├── config/           # 配置管理
│   ├── core/             # 核心逻辑
│   ├── database/         # 数据库操作
│   └── logger/           # 日志管理
├── templates/            # HTML模板
├── run.bat              # Windows启动脚本
└── run.sh               # Linux/Mac启动脚本

添加新功能

  1. internal/core/ 中添加核心逻辑
  2. internal/api/ 中添加API接口
  3. internal/database/ 中添加数据模型
  4. 更新配置文件支持新参数

许可证

MIT License