fix: 修复空 cookie 对象处理

This commit is contained in:
70CentsApple
2026-10-19 14:04:57 +08:00
parent 19c7dad6db
commit 896a62ec96
6 changed files with 30 additions and 7 deletions
+1 -1
View File
@@ -27,7 +27,7 @@ moduleFiles.forEach((file) => {
const cookie =
typeof data.cookie === 'string'
? cookieToJson(data.cookie)
: data.cookie || {}
: data.cookie
return fileModule(
{
+2 -2
View File
@@ -1,10 +1,10 @@
const QRCode = require('qrcode')
const { generateChainId } = require('../util/index')
const { generateChainId, hasCookie } = require('../util/index')
module.exports = (query) => {
return new Promise(async (resolve) => {
const platform = query.platform || 'pc'
const cookie = query.cookie || ''
const cookie = hasCookie(query.cookie) ? query.cookie : ''
// 构建基础URL
let url = `https://music.163.com/login?codekey=${query.key}`
+7 -2
View File
@@ -1,18 +1,23 @@
// 听歌打卡
const createOption = require('../util/option.js')
const { hasCookie } = require('../util/index')
const { APP_CONF } = require('../util/config.json')
const DOMAIN = APP_CONF.clDomian
module.exports = async (query, request) => {
// 注入 os=osx 的 cookie
let cookie = query.cookie || ''
let cookie = hasCookie(query.cookie)
? query.cookie
: process.env.NETEASE_COOKIE || ''
if (typeof cookie === 'object') {
cookie = Object.assign({ os: 'osx' }, cookie)
} else if (typeof cookie === 'string') {
if (cookie.indexOf('os=') > -1) {
cookie = cookie.replace(/os=[^;]+/g, 'os=osx')
} else {
} else if (cookie) {
cookie = cookie + '; os=osx'
} else {
cookie = 'os=osx'
}
} else {
cookie = 'os=osx'
+4 -1
View File
@@ -13,6 +13,7 @@ const {
buildMetaJson,
doUpload,
} = require('../util/ncbl')
const { hasCookie } = require('../util/index')
module.exports = async (query, request) => {
// --- 参数校验 ---
@@ -32,7 +33,9 @@ module.exports = async (query, request) => {
const sourceName = query.source || 'list'
// --- 解析认证上下文 ---
const rawCookie = query.cookie || ''
const rawCookie = hasCookie(query.cookie)
? query.cookie
: process.env.NETEASE_COOKIE || ''
const cookieObj = parseCookie(rawCookie)
cookieObj.os = 'pc'
const ctx = extractContext(cookieObj)
+11
View File
@@ -103,6 +103,15 @@ module.exports = {
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) {
// 优化:使用预绑定的keys函数和for循环
const cookieKeys = keys(cookie)
@@ -226,6 +235,8 @@ const cookieToJsonOptimized = (function() {
function getCookieValue(cookieStr, name) {
if (!cookieStr) return ''
if (typeof cookieStr === 'object') return cookieStr[name] || ''
const cookies = '; ' + cookieStr
const parts = cookies.split('; ' + name + '=')
if (parts.length === 2) return parts.pop().split(';').shift()
+5 -1
View File
@@ -1,7 +1,11 @@
const { hasCookie } = require('./index')
const createOption = (query, crypto = '', checkToken = false) => {
return {
crypto: query.crypto || crypto || '',
cookie: query.cookie || process.env.NETEASE_COOKIE,
cookie: hasCookie(query.cookie)
? query.cookie
: process.env.NETEASE_COOKIE,
ua: query.ua || '',
proxy: query.proxy,
realIP: query.realIP,