12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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
- }
|