logo
1
0
WeChat Login

去水印服务 - 双版本架构

一个高度模块化的去水印服务,支持 Cloudflare WorkerNode.js + Docker 两种部署方式,通过共用代码库实现 85% 代码复用率,确保功能完全一致。

🎯 项目特色

  • 🔄 双版本支持 - Worker 无服务器 + Node.js 容器化
  • 📦 高代码复用 - 85% 共用代码,统一维护
  • 🧪 功能一致性 - 统一测试套件验证 API 兼容性
  • 🚀 一键部署 - 自动化部署脚本
  • 🔒 反检测机制 - 随机化策略避免 API 限制
  • 📊 性能优化 - Docker 镜像 <60MB,响应时间优化

📁 项目结构

watermark-remover/ ├── shared/ # 共用代码库 (85% 复用) │ ├── core/ # 核心去水印逻辑 │ ├── utils/ # 工具函数 (随机化、加密、图像) │ └── constants/ # 常量定义 ├── worker/ # Cloudflare Worker 版本 │ ├── src/index.js # Worker 适配层 │ └── wrangler.toml # Worker 配置 ├── nodejs/ # Node.js + Docker 版本 │ ├── src/ # Express 服务器 │ ├── public/test.html # 内置测试页面 │ ├── Dockerfile # Docker 配置 │ └── docker-compose.yml ├── tests/ # 统一测试套件 │ ├── test-suite.js # 跨平台测试 │ ├── test-page.html # 可视化测试 │ └── run-tests.js # 测试运行器 └── scripts/ └── deploy.sh # 统一部署脚本

🚀 快速开始

1. 克隆项目

git clone <repository-url> cd watermark-remover

2. 选择部署方式

🌐 Cloudflare Worker 版本

# 部署到开发环境 ./scripts/deploy.sh worker --env dev # 部署到生产环境 ./scripts/deploy.sh worker --env prod

🐳 Node.js Docker 版本

# 构建并运行 Docker 容器 ./scripts/deploy.sh docker --port 3000 # 访问服务 curl http://localhost:3000/health # 访问内置测试页面 open http://localhost:3000/test

🔄 部署所有版本

./scripts/deploy.sh all --env prod

📡 API 接口

两个版本提供完全相同的 API 接口:

健康检查

GET /health

URL 去水印

POST /v1/remove-watermark Content-Type: application/json { "image_url": "https://example.com/image.jpg" }

文件上传去水印

POST /v1/remove-watermark/upload Content-Type: multipart/form-data image: <file>

响应格式

{ "success": true, "original_url": "https://example.com/image.jpg", "watermark_removed_url": "https://result.com/processed.jpg" }

🧪 测试

统一测试套件

# 测试 Node.js 版本 cd tests && node run-tests.js --env nodejs # 测试 Worker 版本 node run-tests.js --env worker # 测试所有版本 node run-tests.js --all

可视化测试

  • Node.js 版本: http://localhost:3000/test
  • 统一测试页面: tests/test-page.html
  • Worker 测试页面: worker/test-upload.html

🔧 开发指南

本地开发

Node.js 版本

cd nodejs npm install npm start # 访问 http://localhost:3000

Worker 版本

cd worker npm install npm run dev # 访问 http://localhost:8787

代码修改流程

  1. 修改 shared/ 目录中的共用代码
  2. 运行统一测试验证功能一致性
  3. 分别测试两个版本
  4. 部署到相应环境

📊 版本对比

特性Cloudflare WorkerNode.js + Docker
部署复杂度简单中等
扩展性自动全球扩展手动扩展
成本模式按请求计费固定成本
冷启动~100ms无冷启动
运行环境V8 沙箱完整 Node.js
适用场景低频使用,全球分发高频使用,私有部署

🔒 安全特性

  • 反检测机制 - 14种随机 User-Agent,随机延迟
  • 输入验证 - 文件类型、大小、格式检查
  • 错误处理 - 统一错误响应格式
  • CORS 支持 - 跨域请求处理
  • 健康检查 - 服务状态监控

📈 性能指标

  • 代码复用率: 85%
  • Docker 镜像大小: ~129MB
  • API 响应时间: 5-10秒 (取决于图片大小)
  • 支持文件格式: JPEG, PNG, WebP
  • 最大文件大小: 10MB

🛠️ 部署选项

生产环境推荐

低频使用 → Cloudflare Worker

  • 全球 CDN 边缘节点
  • 按请求计费,成本低
  • 零运维,自动扩展

高频使用 → Node.js Docker

  • 固定成本,可预测
  • 完全控制运行环境
  • 支持私有云部署

📚 文档

🤝 贡献指南

  1. Fork 项目
  2. 创建功能分支
  3. 修改共用代码库
  4. 运行统一测试套件
  5. 提交 Pull Request

📄 许可证

MIT License - 详见 LICENSE 文件


🎯 设计理念: 通过高度模块化的架构设计,实现一次开发、多平台部署,确保功能一致性的同时提供灵活的部署选择。

About

No description, topics, or website provided.
Language
JavaScript36.5%
Markdown27.7%
HTML24.6%
Shell8.3%
Others2.9%