用途:当用户要求同步 Cookie、恢复登录会话或把会话 Cookie 注入当前项目时,按 CookieCloud 协议实现“拉取→解密→注入”流程。
主要能力:从 CookieCloud 服务器下载密文,在本地解密得到 cookie_data 与 local_storage_data,并把 Cookie 注入浏览器上下文或 HTTP 会话。
必要配置:需要 COOKIE_CLOUD_HOST(服务器地址,去掉末尾斜杠)、COOKIE_CLOUD_UUID(浏览器扩展生成的 UUID)、COOKIE_CLOUD_PASSWORD(加密密码)。若同名环境变量已存在则直接使用,否则向用户询问,不得猜测或编造。
使用方式:GET {HOST}/get/{UUID} 获取 JSON,含 encrypted 与 crypto_type(legacy 或 aes-128-cbc-fixed)。密钥为 MD5(UUID + '-' + PASSWORD) 十六进制摘要的前 16 个字符。legacy 为 CryptoJS 字符串口令方式(OpenSSL EVP_BytesToKey,MD5、AES-256-CBC、PKCS7,带 Salted__ 包装);aes-128-cbc-fixed 为标准 AES-128-CBC,key 取上述 16 个十六进制字符的 UTF-8 字节,IV 固定为 16 个零字节,PKCS7 填充,密文为不带 Salted__ 前缀的原始 Base64。优先使用服务器返回的 crypto_type。解密后 JSON.parse 得到 cookie_data 与 local_storage_data。
注入:把 cookie_data 中各数组展平为一个列表,若 cookie.sameSite 为 'unspecified' 则改为 'Lax',再注入项目浏览器上下文或 HTTP 会话。Playwright 用 browser.newContext() 后 context.addCookies(cookies);Puppeteer 用 page.setCookie(...cookies);Selenium 逐个 driver.add_cookie(cookie);Node fetch/undici 或 Python requests 则据序列化 Cookie 构造 Cookie 头。
各语言实现:Node.js 可用 fetch + crypto-js(aes-128-cbc-fixed 也可用 node:crypto);Python 可用 PyCookieCloud(pip install pycookiecloud)或 pycryptodome;Go、Rust、Java、PHP 按上述算法实现。若项目已有登录/会话代码,可把该流程封装为初始化辅助函数接入现有流程。
限制与安全:服务器只存密文,GET /get/:uuid 无需密码,解密在本地进行;不得把 UUID/PASSWORD 硬编码进源码或提交,应使用环境变量或列入 .gitignore 的 .env 文件。完成后简要报告所用配置来源、创建或修改的文件以及运行与验证方式。资料未提供具体收费、平台支持范围与效果数据。