From e528f93ef76343c179cdd2c8300c87cde704a6fe Mon Sep 17 00:00:00 2001 From: binaryify Date: Mon, 21 Aug 2023 18:24:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8C=BF=E5=90=8D=E7=99=BB=E5=BD=95use?= =?UTF-8?q?rname=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 1 - module/register_anonimous.js | 27 +++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/app.js b/app.js index dba7811..eab4344 100644 --- a/app.js +++ b/app.js @@ -1,6 +1,5 @@ #!/usr/bin/env node async function start() { - // 如果需要手动修改anonymous_token,需要注释generateConfig调用 require('./server').serveNcmApi({ checkVersion: true, }) diff --git a/module/register_anonimous.js b/module/register_anonimous.js index 10337ce..2b52560 100644 --- a/module/register_anonimous.js +++ b/module/register_anonimous.js @@ -1,11 +1,34 @@ // 游客登录 +const crypto = require('crypto') +const ID_XOR_KEY_1 = Buffer.from('3go8&$833h0k(2)2') + +function cloudmusic_dll_encode_id(some_id) { + const xored = Buffer.from( + [...some_id].map( + (c, idx) => c.charCodeAt(0) ^ ID_XOR_KEY_1[idx % ID_XOR_KEY_1.length], + ), + ) + const digest = crypto.createHash('md5').update(xored).digest() + return digest.toString('base64') +} +function createRandomDeviceId() { + const t = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' + const e = 6 + let n = '' + for (let i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * e)) + return n +} module.exports = async (query, request) => { query.cookie.os = 'iOS' + const deviceId = createRandomDeviceId() + const encodedId = Buffer.from( + `${deviceId} ${cloudmusic_dll_encode_id(deviceId)}`, + ) + const username = encodedId.toString('base64') const data = { /* A base64 encoded string. */ - username: - 'MzEwMjcwYmY0Y2Y0ODcwMzU0ZDFkZmIxMmMzMGYyMTkgVlBaanMwNmtrb1BYMGxOVzVUMUJ3Zz09', + username: username, } let result = await request( 'POST',