You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解密Express.js的Connect.sid Cookie

解密Express.js的Connect.sid Cookie方法

Connect.sid的格式为s:<session-content>.<hmac-signature>,其中:

  • <session-content>:如果是客户端存储模式(如cookie-session),这是编码/加密后的会话数据;如果是服务器端存储(如express-session默认内存存储),这仅仅是会话ID,实际数据存在服务器上。
  • <hmac-signature>:用于验证内容完整性,无法逆向解密。

先明确你的会话存储类型

如果你的Express应用用的是express-session默认配置,Cookie里的内容只是会话ID,无法通过Cookie直接解密数据,必须从服务器的会话存储(内存、Redis等)中读取对应ID的数据。

如果用的是cookie-session(会话数据存在客户端Cookie中),按以下步骤解密:

解密客户端存储的Connect.sid

  1. 匹配原应用配置
    必须使用和原应用完全一致的密钥、加密算法、Cookie配置(如name、maxAge),否则解密会失败。你的密钥已提供,确保脚本中完全复用。

  2. 编写解密脚本

const cookieParser = require('cookie-parser');
const { decode } = require('cookie-session/lib/cookie');

// 原应用使用的密钥
const secret = '#@%#&^$^$%@$^$&%#$%@#$%$^%&$%^#$%@#$%#E%#%@$FEErfgr3g#%GT%536c53cc6%5%tv%4y4hrgrggrgrgf4n';

// 提取Cookie中s:后的内容(去掉签名部分)
const cookieValue = 's:fRptL0_o-5FBbqqbDluHrSvo4DyKHvcP.6Y57+JkukcncVD/6ANbtojCGkL2yLnnmJgo2n30SnWo';
const [sessionPart] = cookieValue.split('.')[0].split('s:')[1];

// 解密
try {
  const decrypted = decode(sessionPart, secret);
  console.log('解密后的会话数据:', decrypted);
} catch (err) {
  console.error('解密失败:', err.message);
}

常见问题排查

  • 解密失败?检查密钥是否完全匹配,包括特殊字符、大小写;确认原应用是否开启了encrypt: true(默认cookie-session不加密,仅编码)。
  • 拿到的是乱码?说明原应用使用了加密,需要确保脚本中使用相同的加密算法(默认aes-256-cbc),并配置正确的密钥。

内容的提问来源于stack exchange,提问作者Strike-Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 02:52:31