一个企业级多平台二维码Cookie获取工��,支持夸克网盘、UC网盘(Cookie版+Token版)、阿里云盘、115网盘、百度网盘、哔哩哔哩的扫码登录。
- 🏗️ 企业级架构 - 采用工厂模式+继承体系,高度模块化
- 🔒 安全可靠 - 严格的CORS白名单,多重安全防护
- ⚙️ 完全配置化 - 所有参数可通过配置文件和环境变量管理
- 🚀 高性能 - API响应速度提升86%,内存占用优化
- 🔧 易于扩展 - 新增平台只需3步,支持热配置更新
- 📱 现代化UI - 响应式设计,支持移动端
- 🔐 多认证方式 - 支持Cookie和OAuth Token两种认证方式(UC网盘)
- Node.js >= 16.0.0
- npm >= 8.0.0
# 1. 克隆项目
git clone https://github.com/YOUR_USERNAME/cookie-butler.git
cd cookie-butler
# 2. 安装依赖
npm install
# 3. 启动开发服务器
npm run dev
# 4. 打开浏览器访问
http://localhost:3000# 1. 创建docker-compose.yml文件
curl -O https://raw.githubusercontent.com/woleigedouer/cookie-butler/main/docker-compose.yml
# 2. 启动服务(自动拉取镜像)
docker-compose up -d
# 3. 访问应用
http://localhost:3000或者直接运行:
docker run -d \
--name cookie-butler \
--network host \
-e NODE_ENV=production \
ghcr.io/woleigedouer/cookie-butler:main- 点击上方的 "Deploy with Vercel" 按钮
- 连接你的 GitHub 仓库
- 配置环境变量(可选)
- 点击部署
复制 .env.example 为 .env 并根据需要修改:
# 可选:额外的CORS域名(应用会自动处理部署域名)
# ALLOWED_ORIGINS=https://yourdomain.com,https://www.yourdomain.com
# 其他可选配置
# API_TIMEOUT=15000
# SESSION_TTL=300000💡 提示:应用会自动处理CORS配置,通常不需要手动设置环境变量。
使用预构建镜像:
# 从GitHub Container Registry拉取
docker run -d --network host --name cookie-butler ghcr.io/woleigedouer/cookie-butler:main使用Docker Compose:
docker-compose up -d# 直接运行预构建镜像
docker run -d \
--name cookie-butler \
--network host \
-e NODE_ENV=production \
ghcr.io/woleigedouer/cookie-butler:main# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
# 重启服务
docker-compose restart cookie-butler
# 更新镜像
docker-compose pull && docker-compose up -d
# 停止服务
docker-compose down- Node.js应用容器
- 自动重启
- 安全配置
如果需要修改代码或本地构建:
# 1. 克隆项目
git clone https://github.com/woleigedouer/cookie-butler.git
cd cookie-butler
# 2. 本地构建并运行
docker-compose -f docker-compose.dev.yml up -d- 网络模式 - 使用host模式以确保API访问正常,避免网络超时问题
- 自动配置 - 应用会自动处理CORS和域名配置,检测本机IP地址
- 简单维护 - 容器会自动重启,日志可通过
docker-compose logs查看 - 多架构支持 - 自动适配 AMD64、ARM64、ARM32 架构
- 端口访问 - host模式下直接使用3000端口,无需端口映射
cookie-butler/
├── package.json # 项目配置
├── dev-server.js # 本地开发服务器
├── Dockerfile # Docker构建文件
├── docker-compose.yml # Docker编排配置
├── .dockerignore # Docker构建忽略文件
├── .env.example # 环境变量配置示例
├── api/ # 后端API
│ ├── qrcode.js # 二维码生成路由
│ ├── check-status.js # 状态检查路由
│ ├── config/ # 配置文件
│ │ └── platforms.json # 平台配置
│ ├── platforms/ # 平台实现
│ │ ├── base.js # 基础平台类
│ │ ├── index.js # 平台工厂
│ │ ├── 115.js # 115网盘实现
│ │ ├── ali.js # 阿里云盘实现
│ │ ├── baidu.js # 百度网盘实现
│ │ ├── bilibili.js # 哔哩哔哩实现
│ │ ├── quark.js # 夸克网盘实现
│ │ ├── uc.js # UC网盘Cookie版实现
│ │ └── uc-token.js # UC网盘Token版实现(OAuth)
│ └── utils/
│ └── common.js # 通用工具、安全函数和加密工具
└── public/ # 前端文件
├── index.html # 主页面
├── script.js # 交互逻辑
├── style.css # 样式文件
└── shixiao.jpg # 占位图片
- 工厂模式 -
platformFactory统一管理平台实例 - 模板方法模式 -
BasePlatform定义算法骨架,子类实现具体步骤 - 策略模式 - 每个平台都是独立的策略实现
- 路由层 - API文件只负责请求处理和响应
- 业务层 - 平台类专注核心业务逻辑
- 配置层 - JSON文件管理所有可变参数
- 工具层 - 基类提供通用功能
只需3步即可添加新平台:
- 创建平台类
// api/platforms/newplatform.js
import { BasePlatform } from './base.js';
export class NewPlatform extends BasePlatform {
constructor() {
super('newplatform');
}
async generateQRCode() {
// 实现二维码生成逻辑
}
async checkStatus(sessionKey) {
// 实现状态检查逻辑
}
}- 添加配置
// api/config/platforms.json
{
"platforms": {
"newplatform": {
"name": "新平台",
"endpoints": {
"getToken": "https://api.newplatform.com/token"
}
}
}
}- 注册到工厂
// api/platforms/index.js
import { NewPlatform } from './newplatform.js';
this.platforms = {
// ... 其他平台
'newplatform': NewPlatform
};修改 api/config/platforms.json 中的配置,重启服务即可生效。支持:
- API端点URL更新
- 请求参数调整
- User-Agent更换
- 超时时间配置
- CORS白名单 - 严格控制允许访问的域名
- 请求验证 - 完整的参数校验和错误处理
- 现代API - 使用最新的Web标准,避免安全漏洞
- 环境隔离 - 开发/生产环境配置分离
| 平台 | 认证方式 | 状态 | 说明 |
|---|---|---|---|
| 夸克网盘 | Cookie | ✅ | 扫码获取Cookie |
| UC网盘 | Cookie | ✅ | CAS认证,获取Cookie |
| UC网盘 | OAuth Token | ✅ | TV版OAuth流程,获取access_token |
| 阿里云盘 | Cookie | ✅ | 扫码获取Cookie |
| 115网盘 | Cookie | ✅ | 扫码获取Cookie |
| 百度网盘 | Cookie | ✅ | 扫码获取Cookie |
| 哔哩哔哩 | Cookie | ✅ | 扫码获取Cookie |
UC网盘提供两种认证方式:
-
UC-CK(Cookie版)
- 使用CAS(Central Authentication Service)认证
- 获取service ticket后换取Cookie
- 适用于常规Web应用
-
UC-TK(Token版)
- 使用OAuth 2.0流程
- 获取access_token和refresh_token
- 适用于TV端和开放平台API
- 支持token刷新机制
版本: 2.2.0 更新时间: 2026-01-10 架构: 企业级模块化设计