Skip to content

clashhub-net/proxy-node-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

代理节点管理工具

License GitHub stars

代理节点管理工具 - 节点测速、延迟测试、可用性检测、订阅解析

管理你的代理节点更轻松

中文 | English


目录


节点测速

单节点测速

#!/bin/bash
# speed-test.sh

NODE_HOST=$1
NODE_PORT=$2

# 使用 speedtest-cli 测速
speedtest-cli --server $NODE_HOST

# 或使用 curl 测试下载速度
curl -o /dev/null -s -w "下载速度: %{speed_download} bytes/s\n" \
    http://$NODE_HOST:$PORT/test.bin

批量节点测速

#!/bin/bash
# batch-speed-test.sh

NODES=(
    "hk.example.com:443"
    "jp.example.com:443"
    "us.example.com:443"
)

for node in "${NODES[@]}"; do
    host=$(echo $node | cut -d: -f1)
    port=$(echo $node | cut -d: -f2)
    
    echo "测试 $host..."
    speed=$(curl -o /dev/null -s -w "%{speed_download}" \
        --connect-timeout 5 \
        http://$host:$port/test.bin 2>/dev/null)
    
    if [ -n "$speed" ]; then
        speed_mbps=$(echo "scale=2; $speed / 1024 / 1024 * 8" | bc)
        echo "  速度: ${speed_mbps} Mbps"
    else
        echo "  连接失败"
    fi
done

延迟测试

ICMP 延迟

#!/bin/bash
# icmp-latency.sh

NODE=$1
COUNT=${2:-10}

echo "测试 $NODE ICMP 延迟..."
ping -c $COUNT $NODE | tail -1 | awk -F '/' '{print "平均延迟: "$5" ms"}'

TCP 延迟

#!/bin/bash
# tcp-latency.sh

NODE_HOST=$1
NODE_PORT=$2

echo "测试 $NODE_HOST:$NODE_PORT TCP 延迟..."

for i in {1..10}; do
    start=$(date +%s%N)
    timeout 5 bash -c "echo >/dev/tcp/$NODE_HOST/$NODE_PORT" 2>/dev/null
    end=$(date +%s%N)
    
    if [ $? -eq 0 ]; then
        latency=$(( (end - start) / 1000000 ))
        echo "$i 次: ${latency}ms"
    else
        echo "$i 次: 超时"
    fi
done

可用性检测

单节点检测

#!/bin/bash
# check-node.sh

NODE_HOST=$1
NODE_PORT=$2

echo "检测 $NODE_HOST:$NODE_PORT..."

# TCP 连接检测
timeout 5 bash -c "echo >/dev/tcp/$NODE_HOST/$NODE_PORT" 2>/dev/null

if [ $? -eq 0 ]; then
    echo "✅ 节点可用"
    exit 0
else
    echo "❌ 节点不可用"
    exit 1
fi

批量节点检测

#!/bin/bash
# check-all-nodes.sh

NODES_FILE="nodes.txt"

echo "检测所有节点..."
echo "===================="

while read node; do
    host=$(echo $node | cut -d: -f1)
    port=$(echo $node | cut -d: -f2)
    
    timeout 3 bash -c "echo >/dev/tcp/$host/$port" 2>/dev/null
    
    if [ $? -eq 0 ]; then
        echo "$node"
    else
        echo "$node"
    fi
done < $NODES_FILE

订阅解析

解析 Clash 订阅

#!/bin/bash
# parse-clash-sub.sh

SUB_URL=$1

# 下载订阅
config=$(curl -sL $SUB_URL)

# 解析节点数量
count=$(echo "$config" | grep -c "server:")

echo "订阅节点数量: $count"

# 提取节点名称
echo "$config" | grep "name:" | sed 's/.*name: //'

解析 V2Ray 订阅

#!/bin/bash
# parse-v2ray-sub.sh

SUB_URL=$1

# 下载并解码
config=$(curl -sL $SUB_URL | base64 -d)

# 统计 vmess 节点
count=$(echo "$config" | grep -c "vmess://")

echo "V2Ray 节点数量: $count"

批量测试

完整测试脚本

#!/bin/bash
# full-test.sh

NODES_FILE=$1
OUTPUT_FILE="test_results.csv"

echo "节点,延迟(ms),速度(Mbps),可用性" > $OUTPUT_FILE

while read node; do
    host=$(echo $node | cut -d: -f1)
    port=$(echo $node | cut -d: -f2)
    
    echo "测试 $node..."
    
    # 延迟测试
    latency=$(ping -c 3 $host | tail -1 | awk -F '/' '{print $5}')
    
    # 可用性检测
    timeout 3 bash -c "echo >/dev/tcp/$host/$port" 2>/dev/null
    if [ $? -eq 0 ]; then
        status="可用"
    else
        status="不可用"
    fi
    
    # 记录结果
    echo "$node,$latency,N/A,$status" >> $OUTPUT_FILE
    
done < $NODES_FILE

echo "测试完成,结果保存在 $OUTPUT_FILE"

推荐机场

机场 特点 价格 链接
ClashVIP 高性价比 ¥15/月起 官网
ClashHub 专线优化 ¥20/月起 官网
机场导航 多机场对比 免费 导航

License

MIT License - 2026

ClashVIP | ClashHub

About

Proxy Node Manager - Tools for managing and testing proxy nodes

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors