@waline-tscf/avatar
v1.0.0-beta.3
Published
A comment system avatar proxy compatible with Tencent SCF deployment based on Waline
Downloads
6
Readme
waline-tscf-avatar
waline-tscf的Avatar代理,部署在cloudfare。
waline-tscf:一个基于 Waline 的评论系统,专为 腾讯云函数 SCF 部署场景优化,增强后端性能,优化个人博客的前端样式。
主要特性
- 前端:admin/client
- 样式定制:更改默认主题,定制个人博客样式
- 后端:server
- SCF支持:适配腾讯云函数serverless运行环境,提供快速部署模板
- 功能增强:优化注册登录及邮件通知逻辑,支持通过环境变量输出多维度日志记录
- 隐私保护:针对QQ邮箱头像获取,采用AES-256-GCM加密(需部署waline-tscf-avatar服务)
- 性能优化:通过依赖懒加载提升冷启动速度,结合缓存与map策略优化热启动性能
- 资源加速:采用 jsDelivr 提供CDN加速,针对性优化MongoDB的连接性能
Avatar代理
本仓库包含一个简单的 Avatar 代理示例(见 index.js),用于在边缘统一代理头像请求并可选地解密带密文的头像 URL。代理支持两种请求方式:
主要功能
- 支持明文和 AES-256-GCM 加密两种模式(通过
AVATAR_PROXY_KEY环境变量配置) - 请求来源域名白名单校验(通过
ALLOWED_DOMAINS环境变量配置) - 边缘缓存优化(由 Cloudflare CDN 自动处理)
- 防止 SSRF 攻击和滥用
快速开始
克隆仓库
git clone https://github.com/abiscuitx/waline-tscf-avatar.git cd waline-tscf-avatar安装 Wrangler CLI(如果还没有安装)
npm install -g wrangler登录 Cloudflare
wrangler login配置环境变量
编辑
wrangler.toml,设置允许访问此 Worker 的来源域名白名单:[vars] ALLOWED_DOMAINS = "example.com,blog.example.com,your-blog-domain.com"设置加密密钥(如果使用加密模式)
wrangler secret put AVATAR_PROXY_KEY # 输入你的密钥(与 waline-tscf 后端配置的密钥保持一致)部署到 Cloudflare Workers
wrangler deploy
加密细节
- 使用 AES-GCM(AES-256-GCM)进行加密/解密。
- 密钥的派生:将
AVATAR_PROXY_KEY的 UTF-8 bytes 做 SHA-256,得到 32 字节的 AES 密钥。 - 密文格式(二进制拼接后 Base64 编码,再做 URL 编码传入):
- IV(12 字节) + 密文(ciphertext) + Tag(16 字节)
API 请求示例
明文模式:
GET https://your-worker.workers.dev/?url=https%3A%2F%2Fexample.com%2Favatar.jpg Referer: https://your-blog-domain.com/加密模式:
GET https://your-worker.workers.dev/?e=<加密参数> Referer: https://your-blog-domain.com/
部署配置
在 Cloudflare Worker 中部署时,需要配置以下环境变量(在 dashboard 的 Variables 或使用 wrangler.toml 的 vars 配置):
AVATAR_PROXY_KEY: 用于解密加密参数e的密钥(如果使用加密模式)ALLOWED_DOMAINS: 请求来源域名白名单,多个域名用英文逗号分隔(例如:example.com,blog.example.com,your-site.com)- 如果配置了此变量,Worker 只会接受来自白名单域名的请求(通过检查
Referer或Origin请求头),其他来源会返回 403 错误 - 如果不配置此变量,则允许所有来源访问(不推荐,可能导致 Worker 被滥用)
- 支持精确匹配和子域名匹配(例如配置
example.com会同时允许example.com和sub.example.com)
- 如果配置了此变量,Worker 只会接受来自白名单域名的请求(通过检查
安全与隐私
- 密钥管理:请妥善保管
AVATAR_PROXY_KEY,不要硬编码在仓库中。使用 Cloudflare 的环境变量/Secrets 管理功能(推荐使用wrangler secret put命令设置) - 来源域名白名单:强烈建议配置
ALLOWED_DOMAINS环境变量,限制只有你的网站可以调用此 Worker,防止被他人滥用消耗你的 Cloudflare Workers 配额
