使用 Cloudflare Workers 搭建安全的 Clash Proxy Provider

发布于 2026-05-23 12:15 1610 字 9 min read

服务器自动部署Astro博客指南2026进阶443端口复用实战:Xray VLESS-Vision-REALITY 偷自己 + 反向代理回家指南使用 Cloudflare Workers 搭建安全的 Clash Proxy ProviderXray VLESS-Vision-REALITY 反向代理示例:远程端口映射,将公网入口端口映射到内网 Web 服务从零开始玩转 OpenWrt 2026:进阶网络架构与 Nikki 极速配置指南2026 自建节点实战:Xray VLESS-Vision-REALITY 部署指南AI 角色扮演进阶指南:从 SillyTavern 部署到 Telegram 接入从 WordPress 到 Astro 迁移记录ImmortalWrt固件overlay扩容安装指南基于mihomo内核的OpenWrt插件Nikki推荐yaml配置OpenWrt 插件 Passwall 推荐设置指南Cloudflare简易使用指南WordPress 网站向 Jekyll 静态博客迁移全记录OpenWrt 插件 OpenClash 推荐配置指南OpenWrt插件Passwall开启ipv6推荐配置OpenWrt插件Passwall推荐配置指南OpenWrt桥接后访问光猫方法PVE下快速更新OpenWrt固件方法群晖 Docker 容器版 Emby 添加弹弹 play 弹幕实战群晖 NAS 常用 Docker Compose 项目部署汇总群晖 Docker 开启 IPv6 双栈与 OpenWrt 协同配置指南软路由刷 PVE 并安装 OpenWrt 折腾记录群晖开启 macvlan 网络并通过 compose 命令安装 docker 指定 ip家庭网络布局:玩转 PT 与 Docker macvlan 避坑指南在本地运行 docker 连接 api 更稳定使用 chatGPT 服务网站添加石蒜模拟器OpenWrt建议设置(个人备份)家庭网络布局:群晖 VMM 虚拟机安装 OpenWrt 旁路由实战群晖种草教程——从玩机到佛系(自用备份版)一加3T手机刷机及安卓必备系统优化软件推荐利用 phpMyAdmin 指令将 WordPress 网站快速 HTTPS 化利用 Docker 快速安装 Aria2 + AriaNg 教程给 WordPress、Typecho、Emlog 等博客网站添加鼠标点击文字特效Windows 10 快捷方式小箭头去除与恢复指南自动化备份指南:利用 Dropbox Uploader 实现网站数据与 SQL 数据库同步Linux学习笔记(二)Linux学习笔记(一)建站之旅其四:常用命令与参考资料汇总建站之旅其一:一些想法建站之旅其二:从 VPS 科学上网到自建站的萌芽建站之旅其三:多次尝试与一次挫败
告别不安全的公开 Gist,用 Cloudflare Workers 搭建带 Token 鉴权的私有节点订阅代理。把节点列表用 base64 存进环境变量,配合 Clash 的 proxy-provider,实现完全自控的安全节点下发。

一、为什么需要 Proxy Provider

Clash 的 proxy-provider 可以让我们从远程 URL 拉取节点列表,极大地方便了多设备间的节点同步。通常大家会选择将节点配置上传到 GitHub Gist 等公开平台,但这意味着:

  • 节点信息暴露在公网
  • 任何人都能通过链接订阅你的节点
  • Gist 可能因为“内容违规”被删除

更好的方式是自己搭建一个私有订阅服务。本文介绍如何利用 Cloudflare Workers 实现一个带 Token 鉴权的、安全可控的 Proxy Provider,彻底告别安全隐患。

二、方案概览

整体流程如下:

  1. 准备好 Clash 节点列表(YAML 格式)并转为 base64
  2. 在 Cloudflare Workers 中新建一个 Worker,写入简单的鉴权读取代码。
  3. 设置两个环境变量:SECRET_TOKEN(访问密钥)和 CONFIG_DB(base64 后的节点配置)。
  4. Worker 收到请求时校验 token 参数,匹配则返回配置内容。
  5. 在 Clash 配置中,通过 proxy-provider 指向 Worker 的地址即可。

全程无需数据库,无需服务器,完全依托 Cloudflare 的边缘网络,安全、快速。

三、准备工作

3.1 准备节点配置并 Base64 编码

Clash 的 proxies 中,配置必须是 YAML 格式。不过对于订阅来说 mihomo (Clash.Meta) 和 sing-box 都对 Base64 订阅提供了非常好的原生支持。

proxies:
  - name: "日本-VLESS"
    type: vless
    server: 1.2.3.4
    port: 443
    uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    tls: true
    network: tcp
    servername: example.com
    flow: xtls-rprx-vision
    client-fingerprint: chrome
    reality-opts:
      public-key: xxxxxxxxxxxxxxxxxx
      short-id: xxxxxxxx

我们可以将上面的 YAML 链接转换为如下 vless:// 内容,保存为 proxies.txt

vless://xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx@1.2.3.4:443?encryption=none&security=reality&sni=example.com&fp=chrome&type=tcp&flow=xtls-rprx-vision&pbk=xxxxxxxxxxxxxxxxxx&sid=xxxxxxxx#日本-VLESS

如果你的节点不止一个,在 vless:// 列表下提行后继续添加即可。后续步骤会将这整个文件进行 base64 编码。

在 Windows 终端中执行以下命令,将文件转换为 base64 字符串并复制结果:

$raw = Get-Content -Raw -Encoding UTF8 proxies.txt
$raw = $raw.TrimEnd("`r", "`n")
$base64 = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($raw))
$base64 | Set-Clipboard

得到的这一长串文字就是要在 Workers 中使用的 CONFIG_DB 的值。

3.2 注册 Cloudflare 账号

访问 Cloudflare 官网 注册并登录。本文操作主要在 Workers & Pages 菜单中完成。

四、创建与部署 Worker

4.1 新建 Worker

在 Cloudflare 仪表板中,点击左侧 Workers & Pages,然后选择 创建创建 Worker。为你的 Worker 起一个名字,例如 clash-provider,然后点击 部署(可以先跳过代码,后面再修改)。

4.2 编辑代码

点击刚刚创建的 Worker,进入 快速编辑 或在线编辑器,将默认代码替换为以下内容:

export default {
  async fetch(request, env) {
    const url = new URL(request.url);

    if (url.searchParams.get("token") !== env.SECRET_TOKEN) {
      return new Response("Unauthorized", { status: 401 });
    }

    const data = env.CONFIG_DB;
    if (!data) {
      return new Response("Not Found", { status: 404 });
    }

    return new Response(data, {
      headers: {
        "Content-Type": "text/plain; charset=utf-8",
        "Cache-Control": "no-store",
      },
    });
  },
};

这段代码的作用:校验请求中的 token 参数,通过后直接返回 CONFIG_DB 的原始内容(即 base64 字符串)。

4.3 设置环境变量

在 Worker 的 设置变量 中,添加以下两个 环境变量

  • SECRET_TOKEN:类型选 加密(推荐),值为你自己设定的一串复杂随机字符串,例如 MyS3cretToK3n2026
  • CONFIG_DB:类型选 纯文本(也可加密,但内容较长,纯文本足够),值粘贴之前生成的 base64 字符串

点击 保存并部署

4.4 测试访问

Worker 部署成功后,你会得到一个 *.workers.dev 的免费域名,例如 https://clash-provider.你的用户名.workers.dev。在浏览器中直接访问会显示 Unauthorized,加上正确的 token 才能看到内容:

https://clash-provider.你的用户名.workers.dev/?token=MyS3cretToK3n2026

如果返回一大串 base64 文本,说明配置正确。

五、在 Clash 中使用

5.1 配置 proxy-provider

打开你的 Clash/Mihomo 配置文件,在 proxy-providers 部分添加如下内容:

proxy-providers:
  my-private-provider:
    type: http
    url: "https://clash-provider.你的用户名.workers.dev/?token=MyS3cretToK3n2026"
    path: ./providers/private.yaml
    interval: 3600
    health-check:
      enable: true
      url: https://www.gstatic.com/generate_204
      interval: 300
  • path 指定本地缓存路径,避免每次都远程请求。
  • interval 决定拉取更新频率(单位秒),根据需求调整。

5.2 使用与验证

proxy-groups 中引用这个 provider,重启 Clash 或热加载配置,就能在面板中看到从 Workers 拉取下来的节点。一切都在加密信道上传输,且必须携带 token,安心程度远高于公开 Gist。

六、进阶优化与注意事项

6.1 更新节点配置

当节点发生变化时,只需重新生成 base64 字符串,更新 Worker 中 CONFIG_DB 变量的值并重新部署。客户端会在下次 interval 到期时自动获取最新列表,无需手动替换每个设备。

6.2 绑定自定义域名

workers.dev 域名在国内访问有时不稳定,建议在 Worker 的 触发器 中绑定自己的域名(需通过 Cloudflare DNS 解析)。

6.3 更严密的安全措施

  • Token 越长越复杂越好,可以定期更换并同步更新 Clash 配置中的 url
  • 可以将 SECRET_TOKEN 设置为 加密 变量,防止在面板中明文显示。
  • 如果担心 base64 内容被截获,可再套一层简单的对称加密,但会增加复杂度,一般情况下 HTTPS + Token 已足够安全。

6.4 排错指南

  • 返回 Unauthorized:检查 Clash 配置中的 token 参数名和值是否与 Worker 环境变量完全一致。
  • 返回 Not FoundCONFIG_DB 可能为空或变量名拼写错误。
  • Clash 报 proxy provider parse error:确认 base64 编码前的 YAML 格式正确,且顶部有 proxies: 根键。
  • 节点不显示:确认 Clash 配置中 use 引用的 provider 名称一致,以及 path 目录有写入权限。
  • SECRET_TOKEN 包含 &#+空格 等字符时,直接拼在 URL 里会被浏览器或 Clash 错误解析,导致比对失败。
    一个解决方法是对 Token 进行 URL 编码。但即使如此,有时候也不一定能访问成功。
    更简单的建议是尽量避免在 Token 中使用特殊字符,只用大小写字母、数字和短横线 -、下划线 _。例如 MyS3cret-Token_2026,这样无需编码,也足够安全。

自建 Proxy Provider 不仅能保护隐私,还能让你彻底掌控节点的分发与回收。借助 Cloudflare 全球边缘网络的低延迟特性,拉取速度也非常理想。希望这篇教程能帮你搭建一个安全、稳定的私有订阅服务。如果有任何疑问,欢迎在评论区交流。

喜欢的话,留下你的评论吧~