Files
shell-scripts/1-代理Xray/cloudflare-机场/yongge_cf_core.md
2025-07-10 16:49:54 +08:00

3.3 KiB
Raw Blame History

核心运行逻辑、关键方法及函数的调用流程 核心运行逻辑 上述代码实现了一个 VLESS over WebSocket 代理服务器,主要功能是将客户端通过 WebSocket 发送的 VLESS 协议数据解析并转发到目标服务器,同时将目标服务器的响应数据回传给客户端。以下是其核心运行逻辑的步骤:

WebSocket 连接建立: 客户端发起 WebSocket 连接请求时vlessOverWSHandler 函数被触发。 创建一个 WebSocketPair包含客户端和服务器端的 WebSocket 对象,服务器端调用 accept() 接受连接。 从请求头中提取 sec-websocket-protocol 字段,用于处理可能的 Early Data0-RTT 数据)。 数据流转换: 使用 makeReadableWebSocketStream 函数将服务器端 WebSocket 的数据转换为 ReadableStream监听 WebSocket 的 message 事件,将接收到的数据推入流中。 当 WebSocket 关闭或出错时,流也会相应关闭或报错。 VLESS 协议解析与处理: 在 ReadableStream 的 write 方法中,处理客户端发送的数据块 (chunk)。 调用 processVlessHeader 解析 VLESS 协议头部提取目标地址、端口、协议类型TCP 或 UDP等信息。 根据解析结果: 如果是 UDP 请求且端口为 53DNS调用 handleUDPOutBound 处理 DNS 查询。 如果是 TCP 请求,调用 handleTCPOutBound 建立到目标服务器的连接并转发数据。 TCP 数据转发: handleTCPOutBound 使用 connect 函数建立到目标服务器的 TCP 连接。 将客户端数据写入 TCP 连接,同时通过 remoteSocketToWS 将目标服务器的响应数据回传给 WebSocket 客户端。 UDPDNS数据转发 对于 DNS 请求handleUDPOutBound 将查询发送到指定的 DNS-over-HTTPS (DoH) 服务器,并将响应通过 WebSocket 回传给客户端。 关键方法及函数 以下是代码中关键的函数及其作用:

vlessOverWSHandler入口函数负责建立 WebSocket 连接并初始化数据流。 makeReadableWebSocketStream将 WebSocket 数据转换为 ReadableStream支持 Early Data 处理。 processVlessHeader解析 VLESS 协议头部,验证用户 UUID 并提取目标地址和端口。 handleTCPOutBound处理 TCP 请求,建立到目标服务器的连接并转发数据。 remoteSocketToWS将目标服务器的响应数据回传给 WebSocket 客户端。 handleUDPOutBound处理 UDPDNS请求向 DoH 服务器发送查询并返回结果。 checkUuidInApiResponse通过 API 验证用户 UUID 的有效性。 调用流程 客户端发起 WebSocket 请求,触发 vlessOverWSHandler。 创建并接受 WebSocket 连接,获取 Early Data如果存在。 调用 makeReadableWebSocketStream 创建 ReadableStream监听 WebSocket 数据。 在 ReadableStream 的 write 方法中: 调用 processVlessHeader 解析数据。 如果是 DNS 请求UDP 端口 53调用 handleUDPOutBound。 如果是 TCP 请求,调用 handleTCPOutBound。 handleTCPOutBound 使用 connectAndWrite 建立 TCP 连接并写入客户端数据。 调用 remoteSocketToWS 将响应数据回传。 remoteSocketToWS 监听 TCP 连接的响应数据。 通过 WebSocket 发送给客户端。 handleUDPOutBoundDNS 请求): 发送 DNS 查询到 DoH 服务器。 将响应通过 WebSocket 返回。