基于 WebSocket 的高性能多路复用隧道代理,支持 0-RTT 首包携带、ECH 加密握手、智能流量混淆, 专为抗探测和高并发场景设计
六大核心技术,打造高性能、高安全、抗探测的隧道代理
TCP 连接请求时直接携带初始数据,减少一次往返延迟,显著提升首包响应速度
// 读取初始数据(20ms 超时)
conn.SetReadDeadline(time.Now().Add(20*time.Millisecond))
initBuf := make([]byte, proto.MaxInitData)
n, _ := conn.Read(initBuf)
// 构建 Open 命令,携带初始数据
payload := proto.BuildOpenPayload(ipStrategy, host, port, initBuf[:n])
支持 Encrypted Client Hello,隐藏真实 SNI,有效对抗深度包检测(DPI)
// 通过 DoH 获取 ECH 配置
func queryDoH(domain, dohURL string) (string, error) {
// 查询 HTTPS 记录 (Type 65)
dnsQuery := buildDNSQuery(domain, 65)
// 返回 Base64 编码的 ECH 配置
return parseDNSResponse(body)
}
三种填充分布策略(均匀/正态/拟态),模拟 HTTPS 流量特征,对抗流量分析
type PaddingCalculator struct {
httpsSmallPktProb float64 // 0.3
httpsSmallPktMean float64 // 60 bytes
httpsLargePktMean float64 // 1200 bytes
}
// 拟态模式:模拟 HTTPS 包大小分布
单条 WebSocket 连接承载数千并发流,32位 StreamID 支持超过 40 亿流
type Frame struct {
Cmd byte // 命令类型
StreamID uint32 // 流标识 (4B = 4,294,967,296)
Flags byte // 标志位
Payload []byte // 实际数据
}
多流数据智能聚合,减少网络开销,提升批量传输效率
type AggregatedData struct {
Items []struct {
StreamID uint32
Data []byte
}
}
// FlagAggregate = 0x02 标识聚合帧
三级缓冲池设计,减少 GC 压力,提升高并发下的内存效率
var bufferPool = &BufferPool{
small: sync.Pool{}, // 4KB
medium: sync.Pool{}, // 32KB
large: sync.Pool{}, // 64KB
}
// 按需获取合适大小的缓冲区
分层架构,职责清晰,高内聚低耦合
极简帧结构,8字节头部,高效编解码
悬停查看详情
// 帧头部编解码
func PackHeader(buf []byte, cmd byte, streamID uint32, flags byte, length int) {
buf[0] = cmd
binary.BigEndian.PutUint32(buf[1:5], streamID)
buf[5] = flags
binary.BigEndian.PutUint16(buf[6:8], uint16(length))
}
const HeaderLen = 8 // 固定 8 字节头部
// Open 命令的 Payload 结构
┌──────────────┬──────────────┬──────────────────┬───────────┬──────────────┐
│ IP Strategy │ Host Length │ Host │ Port │ Init Data │
│ (1 Byte) │ (1 Byte) │ (0-253 Bytes) │ (2 Bytes) │ (0-4096 B) │
└──────────────┴──────────────┴──────────────────┴───────────┴──────────────┘
// IP 策略
IPDefault = 0x00 // 系统默认
IPv4Only = 0x01 // 仅 IPv4
IPv6Only = 0x02 // 仅 IPv6
IPv4First = 0x03 // 优先 IPv4
IPv6First = 0x04 // 优先 IPv6
Phantom-X 与 Shadowsocks、VMess、Trojan、WireGuard 等协议的对比分析
| 特性 | Phantom-X | Shadowsocks | VMess | Trojan | WireGuard |
|---|---|---|---|---|---|
| 协议类型 | WebSocket + 自定义二进制 | 自定义加密 | 自定义二进制 | TLS + 明文 | UDP + 加密 |
| 多路复用 | 原生支持 (4B+ 流) | 不支持 | 支持 | 不支持 | 不适用 |
| 0-RTT 首包 | 支持携带数据 | 不支持 | 不支持 | 不支持 | TLS 0-RTT |
| ECH 支持 | 原生支持 | 不支持 | 不支持 | 不支持 | 不适用 |
| 流量混淆 | 三种 Padding 策略 | 插件支持 | 有限支持 | 伪装 HTTPS | 无 |
| 数据聚合 | 智能聚合 | 无 | 无 | 无 | 无 |
| 协议伪装 | 标准 HTTPS/WebSocket | 可识别特征 | 可识别特征 | HTTPS 伪装 | UDP 特征明显 |
| 头部开销 | 8 Bytes | ~16 Bytes | ~40 Bytes | ~58 Bytes | ~32 Bytes |
| 抗探测能力 | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐ |
多层安全设计,从认证到传输全方位保护
基于时间戳的 HMAC-SHA256 签名,防止令牌重放攻击
// 生成签名令牌
func GenerateSignedToken(secret, clientID string) string {
timestamp := time.Now().Unix()
message := fmt.Sprintf("%s:%d", clientID, timestamp)
mac := hmac.New(sha256.New, []byte(secret))
mac.Write([]byte(message))
signature := hex.EncodeToString(mac.Sum(nil))
return fmt.Sprintf("%s:%d:%s", clientID, timestamp, signature)
}
// 令牌有效期:5 分钟
const TokenValiditySeconds = 300
严格的 Host 验证,防止 SSRF 和注入攻击
// Host 验证规则
func ValidateHost(host string) error {
// 1. 长度检查 (最大 253)
if len(host) > MaxHostLen { return ErrHostTooLong }
// 2. 危险字符检查
// 禁止: < > " ' ` \ $ { } | & ; ( ) [ ]
// 3. 域名格式验证
// 4. 本地地址检测 (可选)
if isLocalAddress(host) { return ErrInvalidHost }
return nil
}
点击切换不同的填充分布模式
拟态模式模拟 HTTPS 流量包大小分布,30% 小包 (~60B) + 70% 大包 (~1200B)
多维度优化,追求极致性能
type ConnPool struct {
cfg *Config
conns []*PoolConn // 连接数组
frameHandler func(...) // 帧处理器
nextConnIdx uint32 // 轮询索引
}
// 配置参数
NumConnections = 3 // 默认连接数
WriteQueueSize = 4096 // 写队列大小
AggregateDelay = 5 * time.Millisecond
MaxAggSize = 64 * 1024 // 64KB 聚合阈值
// 超时配置
WriteTimeout = 10 * time.Second // 写超时
ReadTimeout = 60 * time.Second // 读超时
PingInterval = 30 * time.Second // 心跳间隔
IdleTimeout = 120 * time.Second // 空闲超时
InitDataReadTimeout = 20 * time.Millisecond // 0-RTT 读取窗口
// 并发限制
MaxStreamsPerConn = 1000 // 每连接最大流数
MaxConnections = 10000 // 最大连接数
// 缓冲区
ReadBufferSize = 64 * 1024 // 64KB
WriteBufferSize = 64 * 1024 // 64KB
清晰的目录组织,模块化设计
一键安装,快速部署
# client.yaml
server: "wss://your-server.com:443/ws"
token: "your-secret-token"
socks5_listen: ":1080"
num_connections: 3
# ECH 配置
enable_ech: true
ech_domain: "cloudflare-ech.com"
# Padding 配置
enable_padding: true
padding_distribution: "mimicry"
log_level: "info"