Taio_O 9b49b50f14 server正则验证 há 10 meses atrás
..
internal 9b49b50f14 server正则验证 há 10 meses atrás
templates 6335594577 first commit há 10 meses atrás
README.md 6335594577 first commit há 10 meses atrás
USAGE.md 6335594577 first commit há 10 meses atrás
config.yaml 6335594577 first commit há 10 meses atrás
go.mod 6335594577 first commit há 10 meses atrás
go.sum 6335594577 first commit há 10 meses atrás
main.go 6335594577 first commit há 10 meses atrás
run.bat 6335594577 first commit há 10 meses atrás
run.sh 6335594577 first commit há 10 meses atrás
test_speed.go 6335594577 first commit há 10 meses atrás

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