From 5ca1df9df6334f0e1fd2867df035a4e76f72ceb1 Mon Sep 17 00:00:00 2001 From: cmliu Date: Tue, 27 Jan 2026 18:01:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E8=AF=BB=E5=8F=96conf?= =?UTF-8?q?ig=5FJSON=E5=87=BD=E6=95=B0=EF=BC=8C=E7=AE=80=E5=8C=96=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E7=BB=84=E5=90=88=E9=80=BB=E8=BE=91=E5=B9=B6=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=AE=8C=E6=95=B4=E8=8A=82=E7=82=B9=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _worker.js | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/_worker.js b/_worker.js index 801699c..9c10afb 100644 --- a/_worker.js +++ b/_worker.js @@ -1442,22 +1442,12 @@ async function 读取config_JSON(env, hostname, userID, 重置配置 = false) { if (env.PATH) config_JSON.PATH = env.PATH.startsWith('/') ? env.PATH : '/' + env.PATH; else if (!config_JSON.PATH) config_JSON.PATH = '/'; - const PATH反代参数 = config_JSON.反代.SOCKS5.启用 ? ('/' + config_JSON.反代.SOCKS5.启用 + (config_JSON.反代.SOCKS5.全局 ? '://' : '=') + config_JSON.反代.SOCKS5.账号) : (config_JSON.反代.PROXYIP === 'auto' ? '/' : `/proxyip=${config_JSON.反代.PROXYIP}`); - let PATH固定参数 = config_JSON.PATH; - if (PATH固定参数 === '/') PATH固定参数 = ''; - else while (PATH固定参数.endsWith('/')) PATH固定参数 = PATH固定参数.slice(0, -1); - - // 分离 PATH固定参数 的路径部分和查询参数部分 - let 路径部分 = PATH固定参数, 查询参数部分 = ''; - const 问号位置 = PATH固定参数.indexOf('?'); - if (问号位置 !== -1) { - 路径部分 = PATH固定参数.slice(0, 问号位置); - 查询参数部分 = PATH固定参数.slice(问号位置); // 包含 '?' - } - - // 组合路径:路径部分 + 反代参数 + 查询参数 + ed参数 - const 基础路径 = 路径部分 + PATH反代参数 + 查询参数部分; - config_JSON.完整节点路径 = config_JSON.启用0RTT ? 基础路径 + (查询参数部分 ? '&ed=2560' : '?ed=2560') : 基础路径; + const { SOCKS5, PROXYIP } = config_JSON.反代; + const PATH反代参数 = SOCKS5.启用 ? `${SOCKS5.启用}${SOCKS5.全局 ? '://' : '='}${SOCKS5.账号}` : (PROXYIP === 'auto' ? '' : `proxyip=${PROXYIP}`); + const normalizedPath = config_JSON.PATH === '/' ? '' : config_JSON.PATH.replace(/\/+(?=\?|$)/, '').replace(/\/+$/, ''); + const [路径部分, ...查询数组] = normalizedPath.split('?'); + const 查询部分 = 查询数组.length ? '?' + 查询数组.join('?') : ''; + config_JSON.完整节点路径 = (路径部分 || '/') + (路径部分 && PATH反代参数 ? '/' : '') + PATH反代参数 + 查询部分 + (config_JSON.启用0RTT ? (查询部分 ? '&' : '?') + 'ed=2560' : ''); if (!config_JSON.TLS分片 && config_JSON.TLS分片 !== null) config_JSON.TLS分片 = null; const TLS分片参数 = config_JSON.TLS分片 == 'Shadowrocket' ? `&fragment=${encodeURIComponent('1,40-60,30-50,tlshello')}` : config_JSON.TLS分片 == 'Happ' ? `&fragment=${encodeURIComponent('3,1,tlshello')}` : '';