diff --git a/util/crypto.js b/util/crypto.js index 6838fe1..0fa1695 100644 --- a/util/crypto.js +++ b/util/crypto.js @@ -151,7 +151,8 @@ const decrypt = (cipher) => { } const aesEcbEncrypt = (key, plaintext) => { - const cipher = crypto.createCipheriv(`aes-${key.length * 8}-ecb`, key, null) + // 某些运行时不允许使用 null 作为 IV,因此使用 Buffer.alloc(0) ,同时与上下文deriveX25519AesKey等函数保持一致 + const cipher = crypto.createCipheriv(`aes-${key.length * 8}-ecb`, key, Buffer.alloc(0)) return Buffer.concat([cipher.update(Buffer.from(plaintext)), cipher.final()]) } @@ -159,7 +160,7 @@ const aesEcbDecrypt = (key, ciphertext) => { const decipher = crypto.createDecipheriv( `aes-${key.length * 8}-ecb`, key, - null, + Buffer.alloc(0), ) return Buffer.concat([decipher.update(ciphertext), decipher.final()]) } diff --git a/util/request.js b/util/request.js index 55b6d2b..b6c9481 100644 --- a/util/request.js +++ b/util/request.js @@ -440,7 +440,11 @@ const createRequest = async (uri, data, options) => { !cookie.NMTID ) { NMTID_RETRIES_LEFT-- - answer.cookie = setCookies.map((x) => { + answer.cookie = ( + typeof res.headers['set-cookie'] === 'string' // node 20 版本以前,可能解析为String + ? [res.headers['set-cookie']] + : res.headers['set-cookie'] || [] + ).map((x) => { const cleaned = cleanCookie(x) const match = x.match(/(?:^|;\s*)NMTID=([^;]+)/) if (match) {