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 # 最终生成的部署产物(自动生成,请勿直接修改)
我们提供了一个本地 HTTP 服务来帮助你在不部署到 Cloudflare 的情况下预览和修改前端控制台界面。
cd cf-api-proxy
# 启动本地预览服务器 (默认运行在 http://localhost:8788)
python src/_local_preview.py注意:本地预览时的默认登录密码为
admin。
如果你修改了 src/console.html 或 src/_worker_backend_template.js,需要运行构建脚本生成最终的 worker.js:
python src/_build_worker.pyURL 重写纯函数单测(不依赖网络):
node test_url_rewrite.jswrangler dev / Miniflare 里 Worker 的 fetch() 由 本机 Node 发出,通常不会自动使用系统 HTTP 代理(HTTP_PROXY=http://127.0.0.1:10808 往往对 Undici/内部 fetch 无效)。因此在国内直连维基百科等站点时,很容易出现 502 Upstream fetch failed,这是网络环境问题,不是 HTMLRewriter 逻辑必然写坏。
推荐工作流(真实镜像测试):
- 改
src/console.html/src/_worker_backend_template.js后执行python src/_build_worker.py - 发布到边缘:
npx wrangler deploy(或npx wrangler versions upload做隔离预览) - 在控制台配置路由,例如:
- Path:
/wiki/* - Target:
https://zh.wikipedia.org/* - 勾选 启用网页镜像
- Path:
- 浏览器访问
https://<your-worker>/wiki/Main_Page验证链接是否变成https://<your-worker>/wiki/...
可选:坚持本地测被墙源站
- 系统级透明代理 / TUN 模式(整机流量走代理),再开
npx wrangler dev - 或只在本地测可达上游(GitHub API、你自己的 API),镜像类站点一律走边缘
确保你已经安装了 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)即可进入控制台。
- Worker 代理路径:
/github/* - 目标 API 地址:
https://api.github.com/* - HTTP 方法:
ANY - 请求头 (Header):
Accept = application/vnd.github.v3+json - 效果: 访问
https://你的域名/github/users/octocat等同于带有正确 Accept 头的 GitHub API 请求,解决国内访问慢或 CORS 跨域问题。
- Worker 代理路径:
/openai/* - 目标 API 地址:
https://api.openai.com/* - 请求头 (Header):
Authorization = Bearer sk-xxxxxxxxx - 效果: 前端直接向
https://你的域名/openai/v1/chat/completions发起跨域 POST 请求,无需在前端代码中暴露真实的 API Key。
- 在控制台"密钥对"中添加多个上游 API Key(如多个 OpenAI Key),并设置各自权重。
- 路由的鉴权头引用密钥对,Worker 每次请求按权重随机选取一个 Key。
- 效果: 分摊配额、自动轮换,某个 Key 失效时不影响整体服务。
- Worker 代理路径:
/npm/* - 目标 API 地址:
https://registry.npmjs.org/* - 边缘缓存 (Cache): 开启
- 缓存 TTL: 86400 (1天)
- 效果: 用户拉取 NPM 元数据时,Cloudflare 将在边缘节点(甚至离用户最近的城市)直接返回 1 天内的缓存结果,实现极速响应,保护 NPM 源站免受高频请求压力。
| 端点 | 方法 | 鉴权 | 说明 |
|---|---|---|---|
/ /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)