mirror of
https://github.com/NeteaseCloudMusicApiEnhanced/api-enhanced.git
synced 2026-10-24 16:41:22 +08:00
fix: 修复空 cookie 对象处理
This commit is contained in:
@@ -27,7 +27,7 @@ moduleFiles.forEach((file) => {
|
|||||||
const cookie =
|
const cookie =
|
||||||
typeof data.cookie === 'string'
|
typeof data.cookie === 'string'
|
||||||
? cookieToJson(data.cookie)
|
? cookieToJson(data.cookie)
|
||||||
: data.cookie || {}
|
: data.cookie
|
||||||
|
|
||||||
return fileModule(
|
return fileModule(
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
const QRCode = require('qrcode')
|
const QRCode = require('qrcode')
|
||||||
const { generateChainId } = require('../util/index')
|
const { generateChainId, hasCookie } = require('../util/index')
|
||||||
|
|
||||||
module.exports = (query) => {
|
module.exports = (query) => {
|
||||||
return new Promise(async (resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
const platform = query.platform || 'pc'
|
const platform = query.platform || 'pc'
|
||||||
const cookie = query.cookie || ''
|
const cookie = hasCookie(query.cookie) ? query.cookie : ''
|
||||||
|
|
||||||
// 构建基础URL
|
// 构建基础URL
|
||||||
let url = `https://music.163.com/login?codekey=${query.key}`
|
let url = `https://music.163.com/login?codekey=${query.key}`
|
||||||
|
|||||||
+7
-2
@@ -1,18 +1,23 @@
|
|||||||
// 听歌打卡
|
// 听歌打卡
|
||||||
|
|
||||||
const createOption = require('../util/option.js')
|
const createOption = require('../util/option.js')
|
||||||
|
const { hasCookie } = require('../util/index')
|
||||||
const { APP_CONF } = require('../util/config.json')
|
const { APP_CONF } = require('../util/config.json')
|
||||||
const DOMAIN = APP_CONF.clDomian
|
const DOMAIN = APP_CONF.clDomian
|
||||||
module.exports = async (query, request) => {
|
module.exports = async (query, request) => {
|
||||||
// 注入 os=osx 的 cookie
|
// 注入 os=osx 的 cookie
|
||||||
let cookie = query.cookie || ''
|
let cookie = hasCookie(query.cookie)
|
||||||
|
? query.cookie
|
||||||
|
: process.env.NETEASE_COOKIE || ''
|
||||||
if (typeof cookie === 'object') {
|
if (typeof cookie === 'object') {
|
||||||
cookie = Object.assign({ os: 'osx' }, cookie)
|
cookie = Object.assign({ os: 'osx' }, cookie)
|
||||||
} else if (typeof cookie === 'string') {
|
} else if (typeof cookie === 'string') {
|
||||||
if (cookie.indexOf('os=') > -1) {
|
if (cookie.indexOf('os=') > -1) {
|
||||||
cookie = cookie.replace(/os=[^;]+/g, 'os=osx')
|
cookie = cookie.replace(/os=[^;]+/g, 'os=osx')
|
||||||
} else {
|
} else if (cookie) {
|
||||||
cookie = cookie + '; os=osx'
|
cookie = cookie + '; os=osx'
|
||||||
|
} else {
|
||||||
|
cookie = 'os=osx'
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
cookie = 'os=osx'
|
cookie = 'os=osx'
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ const {
|
|||||||
buildMetaJson,
|
buildMetaJson,
|
||||||
doUpload,
|
doUpload,
|
||||||
} = require('../util/ncbl')
|
} = require('../util/ncbl')
|
||||||
|
const { hasCookie } = require('../util/index')
|
||||||
|
|
||||||
module.exports = async (query, request) => {
|
module.exports = async (query, request) => {
|
||||||
// --- 参数校验 ---
|
// --- 参数校验 ---
|
||||||
@@ -32,7 +33,9 @@ module.exports = async (query, request) => {
|
|||||||
const sourceName = query.source || 'list'
|
const sourceName = query.source || 'list'
|
||||||
|
|
||||||
// --- 解析认证上下文 ---
|
// --- 解析认证上下文 ---
|
||||||
const rawCookie = query.cookie || ''
|
const rawCookie = hasCookie(query.cookie)
|
||||||
|
? query.cookie
|
||||||
|
: process.env.NETEASE_COOKIE || ''
|
||||||
const cookieObj = parseCookie(rawCookie)
|
const cookieObj = parseCookie(rawCookie)
|
||||||
cookieObj.os = 'pc'
|
cookieObj.os = 'pc'
|
||||||
const ctx = extractContext(cookieObj)
|
const ctx = extractContext(cookieObj)
|
||||||
|
|||||||
@@ -103,6 +103,15 @@ module.exports = {
|
|||||||
return obj
|
return obj
|
||||||
},
|
},
|
||||||
|
|
||||||
|
hasCookie(cookie) {
|
||||||
|
if (typeof cookie === 'string') return cookie.length > 0
|
||||||
|
return (
|
||||||
|
cookie !== null &&
|
||||||
|
typeof cookie === 'object' &&
|
||||||
|
Object.keys(cookie).length > 0
|
||||||
|
)
|
||||||
|
},
|
||||||
|
|
||||||
cookieObjToString(cookie) {
|
cookieObjToString(cookie) {
|
||||||
// 优化:使用预绑定的keys函数和for循环
|
// 优化:使用预绑定的keys函数和for循环
|
||||||
const cookieKeys = keys(cookie)
|
const cookieKeys = keys(cookie)
|
||||||
@@ -226,6 +235,8 @@ const cookieToJsonOptimized = (function() {
|
|||||||
function getCookieValue(cookieStr, name) {
|
function getCookieValue(cookieStr, name) {
|
||||||
if (!cookieStr) return ''
|
if (!cookieStr) return ''
|
||||||
|
|
||||||
|
if (typeof cookieStr === 'object') return cookieStr[name] || ''
|
||||||
|
|
||||||
const cookies = '; ' + cookieStr
|
const cookies = '; ' + cookieStr
|
||||||
const parts = cookies.split('; ' + name + '=')
|
const parts = cookies.split('; ' + name + '=')
|
||||||
if (parts.length === 2) return parts.pop().split(';').shift()
|
if (parts.length === 2) return parts.pop().split(';').shift()
|
||||||
|
|||||||
+5
-1
@@ -1,7 +1,11 @@
|
|||||||
|
const { hasCookie } = require('./index')
|
||||||
|
|
||||||
const createOption = (query, crypto = '', checkToken = false) => {
|
const createOption = (query, crypto = '', checkToken = false) => {
|
||||||
return {
|
return {
|
||||||
crypto: query.crypto || crypto || '',
|
crypto: query.crypto || crypto || '',
|
||||||
cookie: query.cookie || process.env.NETEASE_COOKIE,
|
cookie: hasCookie(query.cookie)
|
||||||
|
? query.cookie
|
||||||
|
: process.env.NETEASE_COOKIE,
|
||||||
ua: query.ua || '',
|
ua: query.ua || '',
|
||||||
proxy: query.proxy,
|
proxy: query.proxy,
|
||||||
realIP: query.realIP,
|
realIP: query.realIP,
|
||||||
|
|||||||
Reference in New Issue
Block a user