# 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 ```bash # 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. 配置数据库 ```sql CREATE DATABASE clash_speed_test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ### 3. 配置应用 编辑 `config.yaml` 文件: ```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:** ```cmd run.bat ``` **Linux/Mac:** ```bash chmod +x run.sh ./run.sh ``` **手动运行:** ```bash go mod tidy go build -o clash-speed-test . ./clash-speed-test ``` ## 功能特性 ### 1. 自动测速 - 定时测试所有活跃节点 - 可配置测试间隔 - 支持启动时立即测试 ### 2. 详细结果 - 延迟 (ms) - 下载速度 (Mbps) - 上传速度 (Mbps) - IP地址 - 地理位置 - 测试时间 ### 3. 错误处理 - 连接超时处理 - 代理类型不支持处理 - 网络错误重试 ### 4. 日志记录 - 详细的测试日志 - 错误信息记录 - 性能统计 ## API接口 ### 获取测试结果 ```bash GET /api/results ``` ### 获取节点列表 ```bash GET /api/nodes ``` ### 手动触发测试 ```bash POST /api/test ``` ## 高级代理测试 对于Shadowsocks、Vmess、Trojan等高级代理,需要: 1. **安装Clash客户端** 2. **配置代理节点** 3. **启动HTTP代理服务** 4. **程序会自动检测本地代理端口** 支持的本地代理端口: - 7890 (Clash默认) - 7891 (Clash SOCKS) - 1080 (通用SOCKS) - 8080 (通用HTTP) - 8118 (Privoxy) ## 配置说明 ### 环境变量 ```bash # 数据库配置 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