From 5c98a9a1eaf30a219d2c779bd4668609bc17405d Mon Sep 17 00:00:00 2001 From: cXp1r <2510037056@qq.com> Date: Mon, 24 Aug 2026 16:26:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3NMTID=E6=9D=A5?= =?UTF-8?q?=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- util/request.js | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/util/request.js b/util/request.js index 1d2f505..204392f 100644 --- a/util/request.js +++ b/util/request.js @@ -68,6 +68,8 @@ const WNMCID = (function () { return `${randomString}.${now().toString()}.01.0` })() +let NMTID = '' + // 预先定义osMap const osMap = { pc: { @@ -155,8 +157,8 @@ const processCookieObject = (cookie, uri) => { appver: cookie.appver || os.appver, } - if (uri.indexOf('login') === -1) { - processedCookie['NMTID'] = CryptoJS.lib.WordArray.random(16).toString() + if (NMTID) { + processedCookie['NMTID'] = NMTID } if (!processedCookie.MUSIC_U) { @@ -420,9 +422,22 @@ const createRequest = async (uri, data, options) => { axios(settings) .then((res) => { const body = res.data - answer.cookie = (res.headers['set-cookie'] || []).map((x) => - x.replace(/\s*Domain=[^(;|$)]+;*/, ''), - ) + const setCookies = res.headers['set-cookie'] || [] + + const cleanCookie = (x) => x.replace(/\s*Domain=[^(;|$)]+;*/, '') + + if (crypto == 'eapi' && !NMTID) { + answer.cookie = setCookies.map((x) => { + const cleaned = cleanCookie(x) + const match = x.match(/NMTID=([^;]+)/) + if (match) { + NMTID = match[1] + } + return cleaned + }) + } else { + answer.cookie = setCookies.map(cleanCookie) + } // debug: 统一注释块,需要时取消注释查看请求/返回的原始密文