修复 URI malformed 错误 #1347 #1287 #1110

This commit is contained in:
binaryify 2021-09-08 14:12:49 +08:00
parent d608f100d1
commit 0660928dc5
4 changed files with 28 additions and 5757 deletions

View File

@ -1,4 +1,7 @@
# 更新日志 # 更新日志
### 4.0.22 | 2021.9.08
- 修复 URI malformed 错误 [#1347](https://github.com/Binaryify/NeteaseCloudMusicApi/issues/1347)
### 4.0.21 | 2021.9.04 ### 4.0.21 | 2021.9.04
- 修复云盘上传失败问题 #1332 - 修复云盘上传失败问题 #1332

13
app.js
View File

@ -8,6 +8,8 @@ const exec = require('child_process').exec
const cache = require('./util/apicache').middleware const cache = require('./util/apicache').middleware
const { cookieToJson } = require('./util/index') const { cookieToJson } = require('./util/index')
const fileUpload = require('express-fileupload') const fileUpload = require('express-fileupload')
const decode = require('safe-decode-uri-component')
// version check // version check
exec('npm info NeteaseCloudMusicApi version', (err, stdout, stderr) => { exec('npm info NeteaseCloudMusicApi version', (err, stdout, stderr) => {
if (!err) { if (!err) {
@ -44,8 +46,9 @@ app.use((req, res, next) => {
;(req.headers.cookie || '').split(/;\s+|(?<!\s)\s+$/g).forEach((pair) => { ;(req.headers.cookie || '').split(/;\s+|(?<!\s)\s+$/g).forEach((pair) => {
let crack = pair.indexOf('=') let crack = pair.indexOf('=')
if (crack < 1 || crack == pair.length - 1) return if (crack < 1 || crack == pair.length - 1) return
req.cookies[decodeURIComponent(pair.slice(0, crack)).trim()] = req.cookies[decode(pair.slice(0, crack)).trim()] = decode(
decodeURIComponent(pair.slice(crack + 1)).trim() pair.slice(crack + 1),
).trim()
}) })
next() next()
}) })
@ -81,7 +84,7 @@ fs.readdirSync(path.join(__dirname, 'module'))
app.use(route, (req, res) => { app.use(route, (req, res) => {
;[req.query, req.body].forEach((item) => { ;[req.query, req.body].forEach((item) => {
if (typeof item.cookie === 'string') { if (typeof item.cookie === 'string') {
item.cookie = cookieToJson(decodeURIComponent(item.cookie)) item.cookie = cookieToJson(decode(item.cookie))
} }
}) })
let query = Object.assign( let query = Object.assign(
@ -94,7 +97,7 @@ fs.readdirSync(path.join(__dirname, 'module'))
question(query, request) question(query, request)
.then((answer) => { .then((answer) => {
console.log('[OK]', decodeURIComponent(req.originalUrl)) console.log('[OK]', decode(req.originalUrl))
const cookies = answer.cookie const cookies = answer.cookie
if (Array.isArray(cookies) && cookies.length > 0) { if (Array.isArray(cookies) && cookies.length > 0) {
@ -113,7 +116,7 @@ fs.readdirSync(path.join(__dirname, 'module'))
res.status(answer.status).send(answer.body) res.status(answer.status).send(answer.body)
}) })
.catch((answer) => { .catch((answer) => {
console.log('[ERR]', decodeURIComponent(req.originalUrl), { console.log('[ERR]', decode(req.originalUrl), {
status: answer.status, status: answer.status,
body: answer.body, body: answer.body,
}) })

5766
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "NeteaseCloudMusicApi", "name": "NeteaseCloudMusicApi",
"version": "4.0.21", "version": "4.0.22",
"description": "网易云音乐 NodeJS 版 API", "description": "网易云音乐 NodeJS 版 API",
"scripts": { "scripts": {
"start": "node app.js", "start": "node app.js",
@ -51,6 +51,7 @@
"music-metadata": "^7.5.3", "music-metadata": "^7.5.3",
"pac-proxy-agent": "^5.0.0", "pac-proxy-agent": "^5.0.0",
"qrcode": "^1.4.4", "qrcode": "^1.4.4",
"safe-decode-uri-component": "^1.2.1",
"tunnel": "^0.0.6" "tunnel": "^0.0.6"
}, },
"devDependencies": { "devDependencies": {