Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CF API Proxy Manager

Cloudflare Worker API 代理及管理控制台。帮助你快速搭建、管理和调试代理路由,通过 Cloudflare 的全球边缘网络,加速或解决 API 请求的跨域和网络连通性问题。前后端一体化,控制台 UI 与反向代理逻辑打包在同一个 Worker 脚本中。

✨ 核心特性

  • 单页控制台 UI:现代化浅色工作区主题,单页完成"路由映射"、"参数注入"、"cURL 导入"及"测试验证",体验流畅。
  • 动态路径代理:支持通配符 /* 配置,一个前缀轻松代理整个 API 域(例如将 /github/* 映射到 https://api.github.com/*)。
  • 请求参数注入:在代理层自动无缝注入(或覆盖)请求头 (Headers) 与 URL 参数 (Query),支持自动附加鉴权 Token,前端调用免传敏感信息。
  • 密钥对管理 (Keypairs):集中管理上游 API Key,路由可引用密钥对并支持加权随机选择,实现多 Key 负载均衡与自动轮换。
  • 边缘缓存 (Edge Caching):原生集成 Cloudflare Cache API,支持对 GET 请求开启边缘节点缓存,并自定义缓存 TTL,显著降低源站 API 压力并极速响应请求。
    • 最佳实践:适用于静态资源、图片(如上图书籍封面)、不频繁更新的公共数据接口(如天气、新闻列表)。不建议对依赖动态身份认证(每个用户数据不同)的接口开启。
  • 网页镜像 (HTML Rewriting):对代理的 HTML 页面自动重写链接、样式与脚本地址,实现被墙站点的完整镜像访问。
  • 草稿箱 (Draft):快速创建可分享的文本/代码片段,支持阅后即焚 (Burn after read)、自定义有效期,并提供美观的提取阅读页。
  • 高安全性鉴权
    • 访问控制台需通过密码鉴权。
    • API 接口 (/api/config, /api/test) 严格校验 X-Admin-Password 头部,防止未授权访问或篡改代理配置。
  • 内置测试面板:无需打开 Postman,直接在右侧"调试执行面板"中一键发起代理请求,实时查看响应时间、状态码及 JSON 结果。
  • 极简部署:前后端一体化,控制台 HTML 与反向代理逻辑打包在同一个 Cloudflare Worker 脚本中。

📁 项目结构

cf-api-proxy/
├── wrangler.toml                 # Cloudflare Worker 配置文件
├── README.md                     # 项目说明文档
├── test_url_rewrite.js           # URL 重写纯函数单元测试
└── src/
    ├── _build_worker.py          # 构建脚本:将 console.html 注入到 worker 模板中
    ├── _local_preview.py         # 本地开发服务器:提供本地 UI 预览与 Mock API
    ├── _worker_backend_template.js # Worker 核心代理与后端 API 逻辑模板(源文件)
    ├── console.html              # 前端控制台 UI(纯 HTML/CSS/JS 单页应用)
    ├── url_rewrite_core.js       # URL 重写纯函数(可独立单测)
    └── worker.js                 # 最终生成的部署产物(自动生成,请勿直接修改)

🚀 快速开始

1. 本地预览与开发

我们提供了一个本地 HTTP 服务来帮助你在不部署到 Cloudflare 的情况下预览和修改前端控制台界面。

cd cf-api-proxy
# 启动本地预览服务器 (默认运行在 http://localhost:8788)
python src/_local_preview.py

注意:本地预览时的默认登录密码为 admin

如果你修改了 src/console.htmlsrc/_worker_backend_template.js,需要运行构建脚本生成最终的 worker.js

python src/_build_worker.py

URL 重写纯函数单测(不依赖网络):

node test_url_rewrite.js

1.1 本地 wrangler dev 与被墙站点(重要)

wrangler dev / Miniflare 里 Worker 的 fetch()本机 Node 发出,通常不会自动使用系统 HTTP 代理HTTP_PROXY=http://127.0.0.1:10808 往往对 Undici/内部 fetch 无效)。因此在国内直连维基百科等站点时,很容易出现 502 Upstream fetch failed,这是网络环境问题,不是 HTMLRewriter 逻辑必然写坏。

推荐工作流(真实镜像测试):

  1. src/console.html / src/_worker_backend_template.js 后执行 python src/_build_worker.py
  2. 发布到边缘:npx wrangler deploy(或 npx wrangler versions upload 做隔离预览)
  3. 在控制台配置路由,例如:
    • Path: /wiki/*
    • Target: https://zh.wikipedia.org/*
    • 勾选 启用网页镜像
  4. 浏览器访问 https://<your-worker>/wiki/Main_Page 验证链接是否变成 https://<your-worker>/wiki/...

可选:坚持本地测被墙源站

  • 系统级透明代理 / TUN 模式(整机流量走代理),再开 npx wrangler dev
  • 或只在本地测可达上游(GitHub API、你自己的 API),镜像类站点一律走边缘

2. 部署到 Cloudflare

确保你已经安装了 Node.js 和 Wrangler CLI。

# 全局安装 wrangler
npm install -g wrangler

# 登录 Cloudflare 账号
wrangler login

# 创建用于存储路由配置的 KV 命名空间
npx wrangler kv:namespace create CONFIG_KV

更新配置:将上面命令输出的 KV 命名空间 ID (如 { binding = "CONFIG_KV", id = "xxx" }) 填写到 wrangler.toml 文件中。

设置安全密码: 为了保护你的代理控制台不被他人滥用,必须设置管理员密码。如果不设置密码,控制台后端将拒绝任何配置保存和测试请求!

# 在生产环境设置 ADMIN_PASSWORD 环境变量
npx wrangler secret put ADMIN_PASSWORD
# 终端会提示你输入密码,请输入你想要的登录密码

发布部署

npx wrangler deploy

部署成功后,访问你的 Worker 域名(例如 https://api-proxy-manager.xxxx.workers.dev)即可进入控制台。

💡 使用场景示例

场景一:代理并加速 GitHub API

  • Worker 代理路径: /github/*
  • 目标 API 地址: https://api.github.com/*
  • HTTP 方法: ANY
  • 请求头 (Header): Accept = application/vnd.github.v3+json
  • 效果: 访问 https://你的域名/github/users/octocat 等同于带有正确 Accept 头的 GitHub API 请求,解决国内访问慢或 CORS 跨域问题。

场景二:安全包装 OpenAI API (隐藏 API Key)

  • Worker 代理路径: /openai/*
  • 目标 API 地址: https://api.openai.com/*
  • 请求头 (Header): Authorization = Bearer sk-xxxxxxxxx
  • 效果: 前端直接向 https://你的域名/openai/v1/chat/completions 发起跨域 POST 请求,无需在前端代码中暴露真实的 API Key。

场景三:多 Key 加权负载均衡

  • 在控制台"密钥对"中添加多个上游 API Key(如多个 OpenAI Key),并设置各自权重。
  • 路由的鉴权头引用密钥对,Worker 每次请求按权重随机选取一个 Key。
  • 效果: 分摊配额、自动轮换,某个 Key 失效时不影响整体服务。

场景四:全球边缘缓存加速公共数据

  • Worker 代理路径: /npm/*
  • 目标 API 地址: https://registry.npmjs.org/*
  • 边缘缓存 (Cache): 开启
  • 缓存 TTL: 86400 (1天)
  • 效果: 用户拉取 NPM 元数据时,Cloudflare 将在边缘节点(甚至离用户最近的城市)直接返回 1 天内的缓存结果,实现极速响应,保护 NPM 源站免受高频请求压力。

🔌 API 端点一览

端点 方法 鉴权 说明
/ /panel /admin /console GET 密码登录 控制台 UI
/api/login POST 密码登录
/api/config GET/POST/DELETE X-Admin-Password 路由配置 CRUD
/api/logs GET X-Admin-Password 最近 50 条请求日志
/api/keypairs GET/POST/DELETE X-Admin-Password 密钥对管理
/api/drafts GET/POST/DELETE X-Admin-Password 草稿 CRUD
/d/:id GET 草稿提取阅读页
/api/test POST X-Admin-Password 代理测试

🛠️ 技术栈

  • 运行时: Cloudflare Workers (JavaScript, ES Module)
  • 存储: Cloudflare KV (CONFIG_KV)
  • 前端: 纯 HTML/CSS/JS 单页应用(无框架,打包进 Worker)
  • 构建: Python 脚本 (_build_worker.py) + 本地预览 (_local_preview.py)

About

Cloudflare Worker API 代理及管理控制台:路由映射、参数注入、边缘缓存、密钥对加权负载均衡、草稿箱,前后端一体的反向代理 Worker。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages