|
1 | | -const Version = '2026-06-09 13:29:03'; |
| 1 | +const Version = '2026-06-11 04:16:17'; |
2 | 2 | let config_JSON, 反代IP = '', 启用SOCKS5反代 = null, 启用SOCKS5全局反代 = false, 我的SOCKS5账号 = '', parsedSocks5Address = {}; |
3 | 3 | let 缓存SOCKS5白名单 = null, 缓存反代IP, 缓存反代解析数组, 缓存反代数组索引 = 0, 启用反代兜底 = true, 调试日志打印 = false; |
4 | 4 | let SOCKS5白名单 = ['*tapecontent.net', '*cloudatacdn.com', '*loadshare.org', '*cdn-centaurus.com', 'scholar.google.com']; |
@@ -44,8 +44,19 @@ export default { |
44 | 44 | if (env.GO2SOCKS5) SOCKS5白名单 = [...new Set(SOCKS5白名单.concat(await 整理成数组(env.GO2SOCKS5)))]; |
45 | 45 | 缓存SOCKS5白名单 = SOCKS5白名单; |
46 | 46 | } else SOCKS5白名单 = 缓存SOCKS5白名单; |
47 | | - if (访问路径 === 'version' && url.searchParams.get('uuid') === userID) {// 版本信息接口 |
48 | | - return new Response(JSON.stringify({ Version: Number(String(Version).replace(/\D+/g, '')) }), { status: 200, headers: { 'Content-Type': 'application/json;charset=utf-8' } }); |
| 47 | + if (访问路径 === 'version') {// 版本信息接口 |
| 48 | + const 请求UUID = (url.searchParams.get('uuid') || '').toLowerCase(); |
| 49 | + if (uuidRegex.test(请求UUID)) { |
| 50 | + const 目标UUID = String(userID).toLowerCase(); |
| 51 | + let 请求前8总和 = 0, 目标前8总和 = 0; |
| 52 | + for (let i = 0; i < 8; i++) { |
| 53 | + const 请求码 = 请求UUID.charCodeAt(i); |
| 54 | + 请求前8总和 += 请求码 <= 57 ? 请求码 - 48 : 请求码 - 87; |
| 55 | + const 目标码 = 目标UUID.charCodeAt(i); |
| 56 | + 目标前8总和 += 目标码 <= 57 ? 目标码 - 48 : 目标码 - 87; |
| 57 | + } |
| 58 | + if (请求前8总和 === 目标前8总和 && 请求UUID.slice(-12) === 目标UUID.slice(-12)) return new Response(JSON.stringify({ Version: Number(String(Version).replace(/\D+/g, '')) }), { status: 200, headers: { 'Content-Type': 'application/json;charset=utf-8' } }); |
| 59 | + } |
49 | 60 | } else if (管理员密码 && upgradeHeader === 'websocket') {// WebSocket代理 |
50 | 61 | await 反代参数获取(url, userID); |
51 | 62 | log(`[WebSocket] 命中请求: ${url.pathname}${url.search}`); |
|
0 commit comments