From d6961ecb4ddea872f25b46065aa7d6ae78953809 Mon Sep 17 00:00:00 2001 From: Sunset Mikoto <26019675+SunsetMkt@users.noreply.github.com> Date: Sun, 24 May 2026 18:11:35 +0000 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20=E5=BD=93ENABLE=5FRANDOM=5FCN=5FIP?= =?UTF-8?q?=E4=B8=BAtrue=E6=97=B6=EF=BC=8C=E9=99=A4=E9=9D=9E=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E5=8F=82=E6=95=B0randomCNIP=E6=98=BE=E5=BC=8F?= =?UTF-8?q?=E4=B8=BAfalse=EF=BC=8C=E9=BB=98=E8=AE=A4=E5=BC=80=E5=90=AFrand?= =?UTF-8?q?omCNIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.prod.example | 3 +++ README.MD | 1 + util/option.js | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.env.prod.example b/.env.prod.example index c4d52d7..43555a9 100644 --- a/.env.prod.example +++ b/.env.prod.example @@ -8,6 +8,9 @@ ENABLE_PROXY = false ## 代理配置 PROXY_URL = "https://your-proxy-url.com/?proxy=" +### 随机IP设置 +## 启用随机中国IP(默认关闭);启用后,所有请求默认使用随机中国IP,除非请求参数randomCNIP显式设为false +ENABLE_RANDOM_CN_IP = false ### UnblockNeteaseMusic 设置项 ## 启用全局解灰, 无论是否调用参数都会使用解灰(不推荐开启) diff --git a/README.MD b/README.MD index 4c98afc..7e18323 100644 --- a/README.MD +++ b/README.MD @@ -131,6 +131,7 @@ $ sudo docker run -d -p 3000:3000 ncm-api | **CORS_ALLOW_ORIGIN** | `*` | 允许跨域请求的域名。可填写单个源,或使用逗号分隔多个源(例如 `https://a.com,https://b.com`)。 | | **ENABLE_PROXY** | `false` | 是否启用反向代理功能。 | | **PROXY_URL** | `https://your-proxy-url.com/?proxy=` | 代理服务地址。仅当 `ENABLE_PROXY=true` 时生效。 | +| **ENABLE_RANDOM_CN_IP** | `false` | 是否默认启用随机中国IP。启用后,所有请求默认使用随机中国IP,除非请求参数 `randomCNIP=false` 显式关闭。 | | **ENABLE_GENERAL_UNBLOCK** | `true` | 是否启用全局解灰(推荐开启)。开启后所有歌曲都尝试自动解锁。 | | **ENABLE_FLAC** | `true` | 是否启用无损音质(FLAC)。 | | **SELECT_MAX_BR** | `false` | 启用无损音质时,是否选择最高码率音质。 | diff --git a/util/option.js b/util/option.js index a4c2615..a481f1d 100644 --- a/util/option.js +++ b/util/option.js @@ -5,7 +5,7 @@ const createOption = (query, crypto = '') => { ua: query.ua || '', proxy: query.proxy, realIP: query.realIP, - randomCNIP: query.randomCNIP || false, + randomCNIP: query.randomCNIP !== undefined ? (query.randomCNIP === true || query.randomCNIP === 'true') : (process.env.ENABLE_RANDOM_CN_IP === 'true'), e_r: query.e_r || undefined, domain: query.domain || '', checkToken: query.checkToken || false, From c6e9746ed6d22d8d7ee08126985303101d0369f8 Mon Sep 17 00:00:00 2001 From: Sunset Mikoto <26019675+SunsetMkt@users.noreply.github.com> Date: Mon, 25 May 2026 01:47:53 +0000 Subject: [PATCH 2/5] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E4=B8=BA=E5=8E=9F?= =?UTF-8?q?=E5=A7=8B=E9=80=BB=E8=BE=91=EF=BC=8C=E7=AE=80=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.prod.example | 2 +- README.MD | 2 +- util/option.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.env.prod.example b/.env.prod.example index 43555a9..db98ec6 100644 --- a/.env.prod.example +++ b/.env.prod.example @@ -9,7 +9,7 @@ ENABLE_PROXY = false PROXY_URL = "https://your-proxy-url.com/?proxy=" ### 随机IP设置 -## 启用随机中国IP(默认关闭);启用后,所有请求默认使用随机中国IP,除非请求参数randomCNIP显式设为false +## 启用随机中国IP(默认关闭);启用后,所有请求默认使用随机中国IP,除非请求参数randomCNIP显式关闭 ENABLE_RANDOM_CN_IP = false ### UnblockNeteaseMusic 设置项 diff --git a/README.MD b/README.MD index 7e18323..fc7d8e4 100644 --- a/README.MD +++ b/README.MD @@ -131,7 +131,7 @@ $ sudo docker run -d -p 3000:3000 ncm-api | **CORS_ALLOW_ORIGIN** | `*` | 允许跨域请求的域名。可填写单个源,或使用逗号分隔多个源(例如 `https://a.com,https://b.com`)。 | | **ENABLE_PROXY** | `false` | 是否启用反向代理功能。 | | **PROXY_URL** | `https://your-proxy-url.com/?proxy=` | 代理服务地址。仅当 `ENABLE_PROXY=true` 时生效。 | -| **ENABLE_RANDOM_CN_IP** | `false` | 是否默认启用随机中国IP。启用后,所有请求默认使用随机中国IP,除非请求参数 `randomCNIP=false` 显式关闭。 | +| **ENABLE_RANDOM_CN_IP** | `false` | 是否默认启用随机中国IP。启用后,所有请求默认使用随机中国IP,除非请求参数 `randomCNIP` 显式关闭。 | | **ENABLE_GENERAL_UNBLOCK** | `true` | 是否启用全局解灰(推荐开启)。开启后所有歌曲都尝试自动解锁。 | | **ENABLE_FLAC** | `true` | 是否启用无损音质(FLAC)。 | | **SELECT_MAX_BR** | `false` | 启用无损音质时,是否选择最高码率音质。 | diff --git a/util/option.js b/util/option.js index a481f1d..37ab13a 100644 --- a/util/option.js +++ b/util/option.js @@ -5,7 +5,7 @@ const createOption = (query, crypto = '') => { ua: query.ua || '', proxy: query.proxy, realIP: query.realIP, - randomCNIP: query.randomCNIP !== undefined ? (query.randomCNIP === true || query.randomCNIP === 'true') : (process.env.ENABLE_RANDOM_CN_IP === 'true'), + randomCNIP: query.randomCNIP || process.env.ENABLE_RANDOM_CN_IP === 'true', e_r: query.e_r || undefined, domain: query.domain || '', checkToken: query.checkToken || false, From 3cfecbcc1f53e6d261b329b9d1f1d82fe826404a Mon Sep 17 00:00:00 2001 From: Sunset Mikoto <26019675+SunsetMkt@users.noreply.github.com> Date: Mon, 25 May 2026 12:51:29 +0800 Subject: [PATCH 3/5] Update util/option.js Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- util/option.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/option.js b/util/option.js index 37ab13a..d79f346 100644 --- a/util/option.js +++ b/util/option.js @@ -5,7 +5,7 @@ const createOption = (query, crypto = '') => { ua: query.ua || '', proxy: query.proxy, realIP: query.realIP, - randomCNIP: query.randomCNIP || process.env.ENABLE_RANDOM_CN_IP === 'true', + randomCNIP: query.randomCNIP !== undefined ? (query.randomCNIP === 'true' || query.randomCNIP === true) : process.env.ENABLE_RANDOM_CN_IP === 'true', e_r: query.e_r || undefined, domain: query.domain || '', checkToken: query.checkToken || false, From 85d70ba9ddbf6fdef54a5bd67f32003d11611604 Mon Sep 17 00:00:00 2001 From: Sunset Mikoto <26019675+SunsetMkt@users.noreply.github.com> Date: Mon, 25 May 2026 12:56:34 +0800 Subject: [PATCH 4/5] Update util/option.js Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- util/option.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/option.js b/util/option.js index d79f346..a7aa474 100644 --- a/util/option.js +++ b/util/option.js @@ -5,7 +5,7 @@ const createOption = (query, crypto = '') => { ua: query.ua || '', proxy: query.proxy, realIP: query.realIP, - randomCNIP: query.randomCNIP !== undefined ? (query.randomCNIP === 'true' || query.randomCNIP === true) : process.env.ENABLE_RANDOM_CN_IP === 'true', + randomCNIP: process.env.ENABLE_RANDOM_CN_IP === 'true' ? (query.randomCNIP !== 'false' && query.randomCNIP !== false) : (query.randomCNIP === 'true' || query.randomCNIP === true), e_r: query.e_r || undefined, domain: query.domain || '', checkToken: query.checkToken || false, From 01d391ac91b14a5c3ed0e75e7b32c3d2dd5fe740 Mon Sep 17 00:00:00 2001 From: Sunset Mikoto <26019675+SunsetMkt@users.noreply.github.com> Date: Mon, 25 May 2026 13:05:14 +0800 Subject: [PATCH 5/5] Update util/option.js Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- util/option.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/option.js b/util/option.js index a7aa474..2af0061 100644 --- a/util/option.js +++ b/util/option.js @@ -5,7 +5,7 @@ const createOption = (query, crypto = '') => { ua: query.ua || '', proxy: query.proxy, realIP: query.realIP, - randomCNIP: process.env.ENABLE_RANDOM_CN_IP === 'true' ? (query.randomCNIP !== 'false' && query.randomCNIP !== false) : (query.randomCNIP === 'true' || query.randomCNIP === true), + randomCNIP: process.env.ENABLE_RANDOM_CN_IP === 'true' ? !['false', false].includes(query.randomCNIP) : ['true', true].includes(query.randomCNIP), e_r: query.e_r || undefined, domain: query.domain || '', checkToken: query.checkToken || false,