首先上检测代码, 灵感来源于 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 条评论:
发表评论