mirror of
https://gitlab.com/Binaryify/neteasecloudmusicapi.git
synced 2025-05-23 22:37:41 +08:00
83 lines
2.3 KiB
JavaScript
83 lines
2.3 KiB
JavaScript
const Encrypt = require('./crypto.js')
|
|
const http = require('http')
|
|
function createWebAPIRequest(host, path, method, data, cookie, callback, errorcallback) {
|
|
let music_req = ''
|
|
const cryptoreq = Encrypt(data)
|
|
const http_client = http.request({
|
|
hostname: host,
|
|
method: method,
|
|
path: path,
|
|
headers: {
|
|
'Accept': '*/*',
|
|
'Accept-Language': 'zh-CN,zh;q=0.8,gl;q=0.6,zh-TW;q=0.4',
|
|
'Connection': 'keep-alive',
|
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
'Referer': 'http://music.163.com',
|
|
'Host': 'music.163.com',
|
|
'Cookie': cookie,
|
|
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36',
|
|
|
|
},
|
|
}, function (res) {
|
|
res.on('error', function (err) {
|
|
errorcallback(err)
|
|
})
|
|
res.setEncoding('utf8')
|
|
if (res.statusCode != 200) {
|
|
createWebAPIRequest(host, path, method, data, cookie, callback)
|
|
return
|
|
} else {
|
|
res.on('data', function (chunk) {
|
|
music_req += chunk
|
|
})
|
|
res.on('end', function () {
|
|
if (music_req == '') {
|
|
createWebAPIRequest(host, path, method, data, cookie, callback)
|
|
return
|
|
}
|
|
if (res.headers['set-cookie']) {
|
|
callback(music_req, res.headers['set-cookie'])
|
|
} else {
|
|
callback(music_req)
|
|
}
|
|
})
|
|
}
|
|
})
|
|
http_client.write('params=' + cryptoreq.params + '&encSecKey=' + cryptoreq.encSecKey)
|
|
http_client.end()
|
|
}
|
|
|
|
function createRequest(path, method, data, callback, errorcallback) {
|
|
return new Promise((resolve, reject) => {
|
|
let ne_req = ''
|
|
const http_client = http.request({
|
|
hostname: 'music.163.com',
|
|
method: method,
|
|
path: path,
|
|
headers: {
|
|
'Referer': 'http://music.163.com',
|
|
'Cookie': 'appver=1.5.2',
|
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
},
|
|
}, res => {
|
|
res.setEncoding('utf8')
|
|
res.on('error', err => {
|
|
reject(err)
|
|
})
|
|
res.on('data', chunk => {
|
|
ne_req += chunk
|
|
})
|
|
res.on('end', () => {
|
|
resolve(ne_req)
|
|
})
|
|
})
|
|
if (method == 'POST') {
|
|
http_client.write(data)
|
|
}
|
|
http_client.end()
|
|
})
|
|
}
|
|
module.exports = {
|
|
createWebAPIRequest,
|
|
createRequest
|
|
} |