diff --git a/_worker.js b/_worker.js index 6b0edba..e3d50ec 100644 --- a/_worker.js +++ b/_worker.js @@ -187,7 +187,7 @@ export default { const usage = await getUsage(env.CF_ID, env.CF_EMAIL, env.CF_APIKEY, env.CF_ALL); pagesSum = usage[1]; workersSum = usage[2]; - total = 1024 * 100; // 100K + total = env.CF_ALL ? Number(env.CF_ALL) : (1024 * 100); // 100K } if (userAgent && userAgent.includes('mozilla')) { return new Response(维列斯Config, { @@ -223,12 +223,13 @@ export default { enableHttp = url.pathname.includes('http://'); socks5Address = url.pathname.split('://')[1].split('#')[0]; if (socks5Address.includes('@')) { - let userPassword = socks5Address.split('@')[0].replaceAll('%3D', '='); + const lastAtIndex = socks5Address.lastIndexOf('@'); + let userPassword = socks5Address.substring(0, lastAtIndex).replaceAll('%3D', '='); const base64Regex = /^(?:[A-Z0-9+/]{4})*(?:[A-Z0-9+/]{2}==|[A-Z0-9+/]{3}=)?$/i; if (base64Regex.test(userPassword) && !userPassword.includes(':')) userPassword = atob(userPassword); - socks5Address = `${userPassword}@${socks5Address.split('@')[1]}`; + socks5Address = `${userPassword}@${socks5Address.substring(lastAtIndex + 1)}`; } - go2Socks5s = ['all in']; + go2Socks5s = ['all in'];//开启全局SOCKS5 } if (socks5Address) { @@ -1201,8 +1202,8 @@ async function httpConnect(addressRemote, portRemote, log) { */ function socks5AddressParser(address) { // 使用 "@" 分割地址,分为认证部分和服务器地址部分 - // reverse() 是为了处理没有认证信息的情况,确保 latter 总是包含服务器地址 - let [latter, former] = address.split("@").reverse(); + const lastAtIndex = address.lastIndexOf("@"); + let [latter, former] = lastAtIndex === -1 ? [address, undefined] : [address.substring(lastAtIndex + 1), address.substring(0, lastAtIndex)]; let username, password, hostname, port; // 如果存在 former 部分,说明提供了认证信息 @@ -1217,7 +1218,7 @@ function socks5AddressParser(address) { // 解析服务器地址部分 const latters = latter.split(":"); // 从末尾提取端口号(因为 IPv6 地址中也包含冒号) - port = Number(latters.pop()); + port = Number(latters.pop().replace(/[^\d]/g, '')); if (isNaN(port)) { throw new Error('无效的 SOCKS 地址格式:端口号必须是数字'); } diff --git a/wrangler.toml b/wrangler.toml index cbefe07..5e6730f 100644 --- a/wrangler.toml +++ b/wrangler.toml @@ -1,4 +1,4 @@ -name = "v20250706" +name = "v20250711" main = "_worker.js" -compatibility_date = "2025-07-06" +compatibility_date = "2025-07-11" keep_vars = true \ No newline at end of file