星期六, 十一月 15, 2025

191 VLESS 偷域名证书的自动化 shell 检测脚本 | 使用 Mihomo 内核搭建 VLESS xtls-rprx-vision

首先上检测代码, 灵感来源于 Xray Reality 自建教程 - Vless + Reality 协议 + Vision 流控

#!/bin/bash
# check_tls_cdn.sh
# 彩色输出 TLS1.3 / ALPN:h2 / X25519 / OCSP 支持情况 + CDN 检测
# 用法: ./check_tls_cdn.sh https://example.com https://another.com
# 颜色定义
GREEN="\e[32m"
RED="\e[31m"
YELLOW="\e[33m"
RESET="\e[0m"
check_url() {
 local url="$1"
 local domain
 domain=$(echo "$url" | sed -E 's#^https?://([^/]+).*#\1#')
 echo -e "=============================="
 echo -e "检测目标: $domain"
 echo -e "------------------------------"
 # ================= TLS 检测 =================
 local output
 output=$(echo | openssl s_client -connect "${domain}:443" -servername "$domain" -alpn "h2,http/1.1" -status 2>&1)
 # TLS 1.3
 echo "$output" | grep -qE 'TLSv1\.3'
 local tls_supported=$?
 # ALPN h2
 echo "$output" | grep -qiE 'ALPN[^:]*:.*\bh2\b'
 local h2_supported=$?
 # X25519
 echo "$output" | grep -qiE '\bX25519\b|\bx25519\b|mlkem[0-9]*x25519'
 local key_supported=$?
 # OCSP
 echo "$output" | grep -qiE 'OCSP (Response|response).*successful|OCSP Response Status: successful'
 local ocsp_supported=$?
 # ===== TLS 输出结果(带颜色) =====
 echo -e "检测结果:"
 [[ $tls_supported -eq 0 ]] && echo -e "  ✓ TLSv1.3: ${GREEN}支持${RESET}" || echo -e "  ✗ TLSv1.3: ${RED}未检测到${RESET}"
 [[ $h2_supported -eq 0 ]] && echo -e "  ✓ ALPN:h2: ${GREEN}支持${RESET}" || echo -e "  ✗ ALPN:h2: ${RED}未检测到${RESET}"
 [[ $key_supported -eq 0 ]] && echo -e "  ✓ X25519/含x25519密钥: ${GREEN}支持${RESET}" || echo -e "  ✗ X25519/含x25519密钥: ${RED}未检测到${RESET}"
 [[ $ocsp_supported -eq 0 ]] && echo -e "  ✓ OCSP stapling: ${GREEN}成功${RESET}" || echo -e "  ✗ OCSP stapling: ${RED}未检测到${RESET}"
 if [[ $tls_supported -eq 0 && $h2_supported -eq 0 && $key_supported -eq 0 ]]; then
   echo -e "${GREEN}✅ $domain TLS 完全符合要求${RESET}"
 else
   echo -e "${RED}❌ $domain TLS 存在问题,请查看上方具体项${RESET}"
 fi
# ================= CDN 检测 =================
echo -e "------------------------------"
echo -e "🔍 CDN 检测中..."
cdn_flag=0  # 0 = 没有检测到 CDN, 1 = 检测到任意 CDN
cdn_list=() # 保存检测到的 CDN
# 1. Cloudflare trace
CF_TRACE=$(curl -s -m 5 "https://$domain/cdn-cgi/trace")
if [[ "$CF_TRACE" == *"fl="* && "$CF_TRACE" == *"ip="* ]]; then
   echo -e "  Cloudflare detected via /cdn-cgi/trace"
   cdn_flag=1
   cdn_list+=("Cloudflare")
fi
# 2. 获取响应头
HEADERS=$(curl -s -I -m 5 "https://$domain")
# 3. CloudFront
if echo "$HEADERS" | grep -qi "X-Amz-Cf-Id\|X-Cache:.*from cloudfront"; then
   echo -e "  Amazon CloudFront detected via HTTP headers"
   cdn_flag=1
   cdn_list+=("CloudFront")
fi
# 4. Fastly
if echo "$HEADERS" | grep -qi "X-Served-By\|X-Timer\|Via:.*varnish"; then
   echo -e "  Fastly detected via HTTP headers"
   cdn_flag=1
   cdn_list+=("Fastly")
fi
# ===== 彩色输出 CDN 总评 =====
if [[ $cdn_flag -eq 1 ]]; then
   echo -e "${RED}❌ $domain 使用了 CDN: ${cdn_list[*]}${RESET}"
else
   echo -e "${GREEN}✅ $domain 没有检测到 CDN${RESET}"
fi

 # ================= 输出原始信息 =================
 echo -e "------------------------------"
 echo -e "🔍 原始 openssl 输出(供调试):"
 echo "$output" | sed 's/^/  /'
 echo -e "------------------------------"
 echo -e "🔍 原始 HTTP 响应头(供调试):"
 echo "$HEADERS" | sed 's/^/  /'
 echo
}
# 主流程
if [[ $# -eq 0 ]]; then
 echo -e "用法: $0 https://example.com [https://another-site.com ...]"
 exit 1
fi
for url in "$@"; do
 check_url "$url"
done

* 代码大部分由 ChatGPT 生成. 

这三种写法都可以: 

/root/1.sh https://docs.aws.amazon.com/ example.com https://test.com

效果如下: 

 

注意: 根据灵感来源的博文介绍, ocsp stapling 是加分项, 不是必需项! 

==========

使用 Mihomo 内核搭建 VLESS xtls-rprx-vision 的配置代码

使用内核搭建是运行在 Ubuntu 的小鸡上的, 所以开机自启使用系统自带的 serviced 就行, 不细讲了, 把配置粘贴出来, 只粘贴关键配置. 

服务端: 

listeners:
  - name: 起个名字
    type: vless
    port: 443 # 端口随意, 我喜欢用 443, 支持使用ports格式, 例如200,302 or 200,204,401-429,501-503
    listen: 0.0.0.0
    users:
      - username: 1
        uuid: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa #UUID
        flow: xtls-rprx-vision
    reality-config:
      dest: 偷的域名:443
      private-key: 私钥 #可由 mihomo generate reality-keypair 命令生成
      short-id:
        - aaaaaaaa
      server-names:
        - 偷的域名, 不要带冒号和端口号

客户端: 

  - name: vless 节点
    server: 节点 IP 或域名, 如果是 IPv6 不要带 [] 中括号
    port: 443 #上面 port 中的端口号
    ip-version: dual #双栈, 如果你的小鸡只有 IPv6 或者双栈但倾向 IPv4, 请看官方文档
    type: vless
    uuid: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa #UUID
    udp: true
    skip-cert-verify: false
    tls: true
#    dialer-proxy: proxy #可选, 前置代理的意思, 家宽 - proxy - vless 节点 - 谷歌, 类似一个丐版 tor, 可以绕过机场审计, 不知道什么是 dialer-proxy 就把这行注释或删掉
    flow: xtls-rprx-vision
    client-fingerprint: firefox #其它选项请看官方文档, 不建议填写 chrome, 之前出过漏洞
    servername: 偷的域名, 不要带冒号和端口号
    reality-opts: 
      public-key: 私钥对应的公钥 #可由 mihomo generate reality-keypair 命令生成
      short-id: aaaaaaaa

网络上基本没见着有教程用 mihomo 搭建 VLESS xtls-rprx-vision 的, 我喜欢用 Mihomo 内核, 所以就把配置粘贴出来了, 测试正常, 网上基本都是一键脚本, 要不就是写 json, 看着头疼. 

你要自己去找一个域名, 不要用我示例的那三个, 然后用 shell 脚本去测试. 也不要去偷大厂域名, 实测会有断流情况, 一断就是好几分钟...

搭建好测试正常之后, 也要记得去检查一下浏览器是否能正常访问: 用浏览器 检测Reality伪装效果 是否搭建成功 排错Troubleshoot

0 条评论: