mirror of
				https://github.com/NeteaseCloudMusicApiEnhanced/api-enhanced.git
				synced 2025-10-25 09:23:11 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const CryptoJS = require('crypto-js')
 | |
| const path = require('path')
 | |
| const fs = require('fs')
 | |
| const ID_XOR_KEY_1 = '3go8&$8*3*3h0k(2)2'
 | |
| const deviceidText = fs.readFileSync(
 | |
|   path.resolve(__dirname, '../data/deviceid.txt'),
 | |
|   'utf-8',
 | |
| )
 | |
| 
 | |
| const createOption = require('../util/option.js')
 | |
| const deviceidList = deviceidText.split('\n')
 | |
| 
 | |
| function getRandomFromList(list) {
 | |
|   return list[Math.floor(Math.random() * list.length)]
 | |
| }
 | |
| function cloudmusic_dll_encode_id(some_id) {
 | |
|   let xoredString = ''
 | |
|   for (let i = 0; i < some_id.length; i++) {
 | |
|     const charCode =
 | |
|       some_id.charCodeAt(i) ^ ID_XOR_KEY_1.charCodeAt(i % ID_XOR_KEY_1.length)
 | |
|     xoredString += String.fromCharCode(charCode)
 | |
|   }
 | |
|   const wordArray = CryptoJS.enc.Utf8.parse(xoredString)
 | |
|   const digest = CryptoJS.MD5(wordArray)
 | |
|   return CryptoJS.enc.Base64.stringify(digest)
 | |
| }
 | |
| 
 | |
| module.exports = async (query, request) => {
 | |
|   const deviceId = getRandomFromList(deviceidList)
 | |
|   global.deviceId = deviceId
 | |
|   const encodedId = CryptoJS.enc.Base64.stringify(
 | |
|     CryptoJS.enc.Utf8.parse(
 | |
|       `${deviceId} ${cloudmusic_dll_encode_id(deviceId)}`,
 | |
|     ),
 | |
|   )
 | |
|   const data = {
 | |
|     username: encodedId,
 | |
|   }
 | |
|   let result = await request(
 | |
|     `/api/register/anonimous`,
 | |
|     data,
 | |
|     createOption(query, 'weapi'),
 | |
|   )
 | |
|   if (result.body.code === 200) {
 | |
|     result = {
 | |
|       status: 200,
 | |
|       body: {
 | |
|         ...result.body,
 | |
|         cookie: result.cookie.join(';'),
 | |
|       },
 | |
|       cookie: result.cookie,
 | |
|     }
 | |
|   }
 | |
|   return result
 | |
| }
 | 
