From 2a74abdef432b53df3bc9b25d677c89720c2b031 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Thu, 28 Jan 2021 10:22:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dxm=E6=BA=90=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- publish/changeLog.md | 1 + .../xm_verify/xm_verify_view.js | 41 ++++++++++++------- src/renderer/utils/music/xm/util.js | 2 +- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/publish/changeLog.md b/publish/changeLog.md index baaeb038..36bc704a 100644 --- a/publish/changeLog.md +++ b/publish/changeLog.md @@ -13,6 +13,7 @@ - 修复快速切换歌曲时, 会出现播放的歌曲和界面展示的歌曲不一致的问题 - 修复了一个由版本更新日志显示导致的潜在远程代码执行攻击漏洞,该漏洞影响v1.6.1及之前的所有版本,请务必更新到最新版本 +- 修复xm搜索源验证问题 ### 其他 diff --git a/src/main/rendererEvents/xm_verify/xm_verify_view.js b/src/main/rendererEvents/xm_verify/xm_verify_view.js index c9ce121f..22df05ef 100644 --- a/src/main/rendererEvents/xm_verify/xm_verify_view.js +++ b/src/main/rendererEvents/xm_verify/xm_verify_view.js @@ -32,22 +32,35 @@ mainHandle(ipcMainWindowNames.handle_xm_verify_open, (event, url) => new Promise disableHtmlFullscreenWindowResize: true, }, }) - view.webContents.on('did-finish-load', () => { - if (/punish\?/.test(view.webContents.getURL())) return - let ses = view.webContents.session - ses.cookies.get({ name: 'x5sec' }) - .then(async([x5sec]) => { + // view.webContents.on('did-finish-load', () => { + // if (/punish\?/.test(view.webContents.getURL())) return + // let ses = view.webContents.session + // ses.cookies.get({ name: 'x5sec' }) + // .then(async([x5sec]) => { + // isActioned = true + // await closeView() + // if (!x5sec) return reject(new Error('get x5sec failed')) + // resolve(x5sec.value) + // }).catch(async err => { + // isActioned = true + // await closeView() + // reject(err) + // }) + // }) + view.webContents.session.webRequest.onCompleted({ urls: ['*://www.xiami.com/*'] }, details => { + if (/\/_____tmd_____\/slide\?/.test(details.url)) { + for (const item of details.responseHeaders['set-cookie']) { + if (!/^x5sec=/.test(item)) continue + const x5sec = /x5sec=(\w+);.+$/.exec(item) isActioned = true - await closeView() - if (!x5sec) return reject(new Error('get x5sec failed')) - resolve(x5sec.value) - }).catch(async err => { - isActioned = true - await closeView() - reject(err) - }) + closeView().finally(() => { + if (!x5sec) return reject(new Error('get x5sec failed')) + resolve(x5sec[1]) + }) + } + } }) - + // console.log(url) global.modules.mainWindow.setBrowserView(view) const windowSizeInfo = getWindowSizeInfo(global.appSetting) view.setBounds({ x: (windowSizeInfo.width - 380) / 2, y: ((windowSizeInfo.height - 320 + 52) / 2), width: 380, height: 320 }) diff --git a/src/renderer/utils/music/xm/util.js b/src/renderer/utils/music/xm/util.js index de8fa799..d8b30f08 100644 --- a/src/renderer/utils/music/xm/util.js +++ b/src/renderer/utils/music/xm/util.js @@ -96,7 +96,7 @@ export const xmRequest = (path, params = '') => { if (resp.body.code !== 'SUCCESS' && resp.body.rgv587_flag == 'sm') { window.globalObj.xm.isShowVerify = true return wait(300).then(() => { - return rendererInvoke(NAMES.mainWindow.handle_xm_verify_open, 'https:' + resp.body.url).then(x5sec => { + return rendererInvoke(NAMES.mainWindow.handle_xm_verify_open, /^https:/.test(resp.body.url) ? resp.body.url : 'https:' + resp.body.url).then(x5sec => { handleSaveToken({ cookies: { x5sec } }) // console.log(x5sec) window.globalObj.xm.isShowVerify = false