sycnnj
发布于 2026-01-14 / 39 阅读

VPS 全能探针 (集成流媒体解锁测试+路由分析+IPv6 速度测试)

前言

在拿到一台新的 VPS 后,我们通常习惯跑各种脚本(如 LemonBench, YABS 等)来测试性能。但很多脚本运行时间过长,且依赖 Python 或其他组件。

为了满足日常快速巡检的需求,我整理了一个纯 Bash 编写的轻量级 VPS 探针脚本 (v8.5)。它不仅能看系统基本信息,还能检测流媒体解锁(ChatGPT/Netflix/Disney+)IP 纯净度以及三网回程路由类型

特别针对 IPv6 网络进行了优化,修复了江苏移动等节点在部分 VPS 上测速不准的问题。

功能亮点

  • ⚡ 极速运行:纯 Shell 脚本,无复杂依赖,秒级输出。

  • 🖥 系统概览:包含 OS 版本、内核、BBR 状态(支持识别 XanMod/BBRv3)、Swap 使用率。

  • 🌍 IP 质量检测

    • 识别 IP 类型(家庭宽带/数据中心/代理)。

    • 检测 IPv4/IPv6 双栈连通性。

  • 🔓 服务解锁检测:覆盖主流服务(ChatGPT, Gemini, Claude, YouTube, Netflix, Disney+, Telegram)。

  • 📶 网络延迟 (Ping)

    • IPv4 国内三网(电信/联通/移动)延迟。

    • IPv6 特别优化:智能切换备选节点,解决江苏移动/电信 IPv6 测速痛点。

  • 🛣 路由智能判断:自动识别回程线路类型(CN2 GIA/GT, 联通 9929, 移动 CMI 等)。

安装与使用

1. 依赖检查

虽然脚本是纯 Bash,但为了功能正常,建议确保系统安装了 curltraceroute

Bash

# Debian/Ubuntu
apt-get update && apt-get install -y curl traceroute

# CentOS/Almalinux
yum install -y curl traceroute

2. 一键部署

复制以下命令并在 VPS 的终端(root 用户)中执行,即可将脚本安装至系统命令:

Bash

cat << 'EOF' > /usr/local/bin/vps
#!/bin/bash
# VPS 探针 - v8.5 (全功能修正版) === 输入 vps 运行===

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
SKYBLUE='\033[0;36m'
PLAIN='\033[0m'
PURPLE='\033[0;35m'
BLUE='\033[0;34m'

[[ $EUID -ne 0 ]] && echo -e "${RED}错误: 请使用 root 权限运行${PLAIN}" && exit 1

clear
echo -e "${SKYBLUE}==============================================${PLAIN}"
echo -e "${SKYBLUE}   VPS 探针 (v8.5 终极版)     ==== 输入 vps 运行 ${PLAIN}"
echo -e "${SKYBLUE}==============================================${PLAIN}"

# --- 1. 基础系统信息 (完整版) ---
hostname=$(hostname)
os=$(grep -oP '(?<=^PRETTY_NAME=).+' /etc/os-release | tr -d '"')
kernel=$(uname -r)
mem=$(free -m | awk '/Mem:/ {print $3 "/" $2 " MB"}')
disk=$(df -h / | awk 'NR==2 {print $3 "/" $2}')

# Swap 状态
swap_total=$(free -m | awk '/Swap:/ {print $2}')
if [ "$swap_total" -gt 0 ]; then
    swap_used=$(free -m | awk '/Swap:/ {print $3}')
    swap_status="${GREEN}开启${PLAIN} (${swap_used}/${swap_total} MB)"
else
    swap_status="${RED}未开启${PLAIN}"
fi

# BBR 详细版本识别
tcp_cc=$(sysctl -n net.ipv4.tcp_congestion_control 2>/dev/null)
if [[ "$tcp_cc" == *"bbr"* ]]; then
    if [[ "$kernel" == *"xanmod"* ]]; then 
        bbr_ver="BBRv3 (XanMod)"
    elif [[ $(modinfo tcp_bbr 2>/dev/null) == *"version: 3"* ]]; then 
        bbr_ver="BBRv3"
    else 
        bbr_ver="BBR 标准版"
    fi
    bbr_status="${GREEN}已开启${PLAIN} ${SKYBLUE}(${bbr_ver})${PLAIN}"
else
    bbr_status="${RED}未开启${PLAIN} ${YELLOW}(当前: $tcp_cc)${PLAIN}"
fi

echo -e "${YELLOW}[系统概览]${PLAIN}"
echo -e "系统: $os"
echo -e "配置: 内存 $mem | 硬盘 $disk"
echo -e "Swap: $swap_status | BBR: $bbr_status"

# --- 2. IP 质量与纯净度 (完整逻辑) ---
echo -e "\n${YELLOW}[IP 质量分析]${PLAIN}"
ip_info=$(curl -s --connect-timeout 5 http://ip-api.com/json?fields=query,isp,country,mobile,proxy,hosting)
ip=$(echo "$ip_info" | grep -o '"query":"[^"]*"' | cut -d'"' -f4)
isp=$(echo "$ip_info" | grep -o '"isp":"[^"]*"' | cut -d'"' -f4)
country=$(echo "$ip_info" | grep -o '"country":"[^"]*"' | cut -d'"' -f4)

# 纯净度逻辑
is_hosting=$(echo "$ip_info" | grep '"hosting":true')
is_proxy=$(echo "$ip_info" | grep '"proxy":true')

if [ -n "$is_proxy" ]; then 
    color_risk="${RED}"
    type_text="代理/VPN (Proxy)"
    risk_text="极高"
elif [ -n "$is_hosting" ]; then 
    color_risk="${YELLOW}"
    type_text="数据中心 (Hosting)"
    risk_text="中 (常见)"
else 
    color_risk="${GREEN}"
    type_text="家庭宽带/移动"
    risk_text="低 (优质)"
fi

# IPv6 多源检测
ipv6=$(curl -6 -s --max-time 3 ipv6.ip.sb)
if [[ -z "$ipv6" ]]; then ipv6=$(curl -6 -s --max-time 3 ipv6.icanhazip.com); fi
if [[ -z "$ipv6" ]]; then ipv6=$(curl -6 -s --max-time 3 api6.ipify.org); fi
if [ -n "$ipv6" ]; then ipv6_disp="${GREEN}$ipv6${PLAIN}"; else ipv6_disp="${RED}未检测到${PLAIN}"; fi

echo -e "IPv4: $ip ($isp - $country)"
echo -e "IPv6: $ipv6_disp"
echo -e "类型: ${color_risk}${type_text}${PLAIN} | 风险: ${color_risk}${risk_text}${PLAIN}"

# --- 3. 全面服务解锁检测 (8项) ---
echo -e "\n${YELLOW}[服务解锁检测]${PLAIN}"
UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"

check_unlock() {
    url="$1"; name="$2"; expect="$3"
    code=$(curl -sL -m 5 -o /dev/null -w "%{http_code}" -A "$UA" "$url")
    if [[ "$code" == "$expect" || "$code" == "302" ]]; then
        echo -e "$name: ${GREEN}已解锁${PLAIN}"
    else
        echo -e "$name: ${RED}未解锁${PLAIN}"
    fi
}

check_unlock "https://chatgpt.com/" "ChatGPT " "200"
check_unlock "https://gemini.google.com/app" "Gemini  " "200"
check_unlock "https://claude.ai/login" "Claude  " "200"
check_unlock "https://www.youtube.com/" "YouTube " "200"
check_unlock "https://www.tiktok.com/" "TikTok  " "200"
check_unlock "https://www.netflix.com/title/80018499" "Netflix " "200"
check_unlock "https://www.disneyplus.com/" "Disney+ " "200"

if nc -z -w 2 149.154.167.50 443 2>/dev/null; then 
    echo -e "Telegram: ${GREEN}已解锁${PLAIN}"
else 
    echo -e "Telegram: ${RED}被阻断${PLAIN}"
fi

# --- 4. 延迟测试 (智能 IPV6 修复版) ---
echo -e "\n${YELLOW}[网络延迟 (Ping)]${PLAIN}"

# 智能 Ping 函数:主 IP 不通自动切备选
ping_smart() {
    name=$1; target1=$2; target2=$3
    res=$(ping6 -c 4 -w 4 $target1 2>/dev/null | grep "min/avg")
    if [ -z "$res" ] && [ -n "$target2" ]; then
        res=$(ping6 -c 4 -w 4 $target2 2>/dev/null | grep "min/avg")
        if [ -n "$res" ]; then name="$name (备线)"; fi
    fi
    if [ -n "$res" ]; then 
        delay=$(echo "$res" | awk -F '/' '{print $5}')
        echo -e "$name: ${GREEN}${delay} ms${PLAIN}"
    else 
        echo -e "$name: ${RED}超时${PLAIN}"
    fi
}

# IPv4 测试
ping_v4() {
    res=$(ping -c 4 -w 4 $1 2>/dev/null | grep "min/avg")
    if [ -n "$res" ]; then 
        delay=$(echo "$res" | awk -F '/' '{print $5}')
        echo -e "$2: ${GREEN}${delay} ms${PLAIN}"
    else 
        echo -e "$2: ${RED}超时${PLAIN}"
    fi
}

echo "--- IPv4 (国内三网) ---"
ping_v4 "113.108.81.36" "电信 (IPv4)"
ping_v4 "210.21.196.6"  "联通 (IPv4)"
ping_v4 "221.131.143.69" "移动 (IPv4)"

if [ -n "$ipv6" ]; then
    echo -e "\n--- IPv6 (江苏优化版) ---"
    # 电信: 南京电信 / 骨干备选
    ping_smart "江苏电信 (IPv6)" "240e:1f:1::1" "240e:1f:1::33"
    # 联通: 公共DNS (稳) / 南京联通
    ping_smart "江苏联通 (IPv6)" "2408:8888::8" "2408:8028::8"
    # 移动: 修复版南京节点 / 备选
    ping_smart "江苏移动 (IPv6)" "2409:8020:2000::6" "2409:8020:2000::8"
else
    echo -e "\n${RED}未检测到 IPv6 连接,跳过 IPv6 延迟测试${PLAIN}"
fi

# --- 5. 路由线路智能判断 (完整保留) ---
echo -e "\n${YELLOW}[路由线路智能判断 (IPv4)]${PLAIN}"
run_trace() {
    trace=$(traceroute -I -q 1 -n -m 30 $1 | grep -v "* * *")
    if [ "$3" == "CT" ]; then
        if echo "$trace" | grep -q "59.43"; then type="${PURPLE}CN2 GIA/GT${PLAIN}"; else type="${YELLOW}163 骨干${PLAIN}"; fi
    elif [ "$3" == "CU" ]; then
        if echo "$trace" | grep -qE "9929|100.100"; then type="${PURPLE}9929 精品${PLAIN}"; else type="${YELLOW}4837 骨干${PLAIN}"; fi
    elif [ "$3" == "CM" ]; then
        if echo "$trace" | grep -qE "221.183|221.176"; then type="${YELLOW}CMI 直连${PLAIN}"; else type="${PLAIN}常规线路${PLAIN}"; fi
    fi
    echo -e "$2 回程: $type"
}
run_trace "113.108.81.36" "电信" "CT"
run_trace "210.21.196.6"  "联通" "CU"
run_trace "120.196.165.24" "移动" "CM"

echo -e "\n${GREEN}测试完成。${PLAIN}"
EOF

chmod +x /usr/local/bin/vps

3. 如何使用

在终端直接输入以下命令即可:

Bash

vps

效果演示

运行脚本后,你会看到类似如下的输出(界面色彩已适配深色终端):

Plaintext

==============================================
   VPS 探针 (v8.5 终极版)     ==== 输入 vps 运行 
==============================================
[系统概览]
系统: Debian GNU/Linux 11 (bullseye)
配置: 内存 512/980 MB | 硬盘 2.5G/20G
Swap: 开启 (0/1024 MB) | BBR: 已开启 (BBRv3)

[IP 质量分析]
IPv4: 1.2.3.4 (DigitalOcean - USA)
IPv6: 2400:xxxx:xxxx...
类型: 数据中心 (Hosting) | 风险: 中 (常见)

[服务解锁检测]
ChatGPT : 已解锁
Gemini  : 已解锁
Netflix : 未解锁
...

[网络延迟 (Ping)]
--- IPv4 (国内三网) ---
电信 (IPv4): 150.23 ms
联通 (IPv4): 145.12 ms
移动 (IPv4): 160.01 ms

--- IPv6 (江苏优化版) ---
江苏电信 (IPv6): 148.20 ms
江苏联通 (IPv6): 142.55 ms
江苏移动 (IPv6): 155.30 ms

[路由线路智能判断 (IPv4)]
电信 回程: CN2 GIA/GT
联通 回程: 4837 骨干
移动 回程: CMI 直连

测试完成。

实际应用截图

技术原理简述

  1. 流媒体检测:通过 curl 模拟浏览器 UA 请求各服务的目标 URL,根据返回的 HTTP 状态码(200/302 vs 403/404)来判断 IP 是否被墙或被限制。

  2. 路由识别:利用 traceroute 追踪回程路由,匹配特定骨干网 IP 段(如 59.43 代表 CN2,9929 代表联通 A 网)来判断线路等级。

  3. 智能 Ping:代码中内置了备选 IP 逻辑,如果主测试 IP 不通(常见于部分节点屏蔽 ICMP),会自动切换到同运营商的备用 IP,确保测试结果的准确性。


免责声明:本脚本仅供技术交流与服务器性能测试使用,请勿用于非法用途。请自行评估脚本运行风险。