usque-custom-pro README

The project's README from github.com/KJGX66F/usque-custom-pro. As one markdown file: README.md.

Usque MASQUE Pro v6.17 — 动态地区规则 + 完整策略组

基于 Cloudflare WARP / MASQUE 的可视化注册、配置生成与多客户端转换工具。
支持 Cloudflare Pages + Cloudflare Workers 双部署,浏览器完成 Usque 注册、原生配置保存、MASQUE 多节点生成、Clash/Mihomo 智能分流、Shadowrocket、sing-box、本地 VLESS 桥接,以及可选的 WARP 出口检测。

YouTube视频教程 点击查看

v6.17 视频教程 点击查看


目录


项目介绍

Usque MASQUE Pro v6.7 是一个面向 Cloudflare WARP / MASQUE 的浏览器可视化工具。

它解决的主要问题是:

手动注册 WARP / MASQUE
        ↓
配置字段复杂
        ↓
不同客户端格式不一致
        ↓
需要手工写 Clash / sing-box / VLESS 配置

本项目把整个流程整理成:

打开网页
  ↓
一键注册 Usque / WARP MASQUE
  ↓
自动下载原生 config.json
  ↓
按需要设置 Endpoint / Port / SNI / DNS / 节点数量
  ↓
一键生成客户端配置
  ↓
Clash / Mihomo / Shadowrocket / sing-box / VLESS 本地桥接

项目重点面向:


核心功能

1. 一键注册 Usque / WARP MASQUE

浏览器中完成:

注册成功后可以立即下载:

usque-config.json

以后只需要重新导入这个文件,不必每次重新注册。


2. 原生配置作为唯一源文件

项目不会要求你每次重新创建账户。

推荐流程:

第一次:注册 → 保存 config.json
以后:导入 config.json → 修改参数 → 重新生成

原生配置通常包含:

private_key
endpoint_v4
endpoint_v6
endpoint_h2_v4
endpoint_h2_v6
endpoint_pub_key
license
id
access_token
ipv4
ipv6

config.json 包含私钥与设备凭据,请勿上传到 GitHub、网盘、公开群组或公开网页。


3. 多节点生成

支持:

13 节点
32 节点
64 节点
100 节点
自定义 1~500 节点

生成方式包括:


4. QUIC / H3 与 H2

支持:

QUIC / H3
H2 / TCP

H2 模式提供扩展地址池,适合生成大量候选节点进行测速筛选。

节点数量多不代表每个节点都一定可用。不同网络、地区、运营商对不同入口和端口的可达性会不同。


5. Clash / Mihomo 智能分流

自动生成:

并使用 MetaCubeX MRS 规则集进行智能分流。


6. ChatGPT / OpenAI 简单模式

v6.7 默认推荐:

ChatGPT / OpenAI → DIRECT
其它国外流量     → WARP / MASQUE

目的是避免某些共享 WARP 出口被 ChatGPT 拒绝时,整个代理配置都不可用。

网页中可以切换:

DIRECT 直连
WARP · AI 自动选择
WARP · 地区优选
WARP · PROXY
AI 策略组

7. 多格式输出

当前支持:

原生 Usque config.json
Clash / Mihomo
Shadowrocket
sing-box
VLESS 本地桥接

8. WARP 出口检测

高级功能可以通过本机 Mihomo API:

这个功能默认折叠,新手可以完全不使用。


项目原理

整体架构

Cloudflare Pages 版

浏览器
  │
  ├─ index.html / app.js / usque-register.js
  │
  ├─ 浏览器本地生成 P-256 私钥
  │
  └─ POST /api/warp/*
          ↓
      Pages _worker.js
          ↓
 Cloudflare WARP 注册 API

Pages 中:

静态页面 → Pages 直接提供
/api/*   → _worker.js

由 _routes.json 控制:

{
  "version": 1,
  "include": ["/api/*"],
  "exclude": []
}

这样静态页面不会经过 API Worker。


Cloudflare Workers 版

浏览器
   ↓
Workers Static Assets
   ├─ public/index.html
   ├─ public/app.js
   └─ public/style.css

/api/*
   ↓
src/worker.js
   ↓
Cloudflare WARP 注册 API

Workers 版通过:

wrangler.jsonc

配置:

"assets": {
  "directory": "./public",
  "binding": "ASSETS",
  "run_worker_first": ["/api/*"]
}

因此:

普通静态资源 → Static Assets
/api/*       → Worker

注册原理

第一步:创建设备

浏览器生成注册所需随机信息,并请求:

/api/warp/register

Worker 只把固定格式请求转发到 Cloudflare WARP 注册接口。


第二步:浏览器生成 P-256 MASQUE 密钥

MASQUE 私钥使用浏览器 WebCrypto:

ECDSA
P-256 / secp256r1

生成。

项目会把私钥转换成 Usque 所需的 SEC1 DER Base64 格式。

关键点:

P-256 私钥在浏览器本地生成

Worker enroll 时只需要 MASQUE 公钥。


第三步:Enroll MASQUE

浏览器请求:

/api/warp/enroll

Worker 将 P-256 公钥提交给 WARP API,并获取:

MASQUE endpoint
endpoint public key
interface IPv4 / IPv6
设备信息

随后浏览器把这些信息与本地私钥组合成:

usque-config.json

MASQUE 多节点原理

这里生成的 13 / 32 / 64 / 100 / 500 个节点,并不是注册 500 个账户。

核心逻辑是:

同一套 Usque / WARP 凭据
          +
不同 Endpoint
          +
不同 Port
          ↓
多个 MASQUE 候选连接

例如:

Endpoint A : 443
Endpoint A : 500
Endpoint A : 4500
Endpoint B : 443
Endpoint B : 500
...

因此:

大量候选主要用于:

测速
自动选择
寻找当前网络更稳定的入口组合

WARP 入口与出口不是一回事

这是本项目最容易误解的地方。

MASQUE Endpoint
      ↓
Cloudflare 入口
      ↓
Cloudflare 网络
      ↓
WARP 出口 IP

修改:

Endpoint
Port
SNI

主要改变的是 如何进入 Cloudflare 网络,并不能保证把最终 WARP 出口强制切换成美国、日本、新加坡等国家。

因此项目中的“出口国家优选”是:

检测现有节点的真实出口
        ↓
从已经出现的出口中选择更符合偏好的节点

不是:

强制 Cloudflare 生成指定国家出口

目录结构

v6.7 双部署版:

usque-custom-pro-v67-dual/
│
├─ README.md
│
├─ pages/
│  ├─ index.html
│  ├─ app.js
│  ├─ style.css
│  ├─ usque-register.js
│  ├─ _worker.js
│  ├─ _routes.json
│  ├─ _headers
│  └─ warp-egress-selector.py
│
└─ workers/
   ├─ package.json
   ├─ wrangler.jsonc
   ├─ deploy-windows.bat
   ├─ deploy-linux-macos.sh
   ├─ src/
   │  └─ worker.js
   └─ public/
      ├─ index.html
      ├─ app.js
      ├─ style.css
      ├─ usque-register.js
      ├─ _headers
      └─ warp-egress-selector.py

部署方式一:Cloudflare Pages(推荐)

如果你是第一次使用,推荐 Pages。

方法 A:GitHub + Cloudflare Pages

这是最推荐的部署方式,因为以后更新代码只需要 Git Push。

第 1 步:上传项目到 GitHub

GitHub 仓库建议保持:

usque-custom-pro/
├─ README.md
├─ pages/
└─ workers/

如果使用 GitHub Desktop:

1. Add Local Repository
2. 选择项目仓库目录
3. Commit to main
4. Publish repository / Push origin

上传完成后 GitHub 首页应该能看到:

pages/
workers/
README.md

第 2 步:Cloudflare 创建 Pages

进入 Cloudflare:

Workers & Pages
→ Create application
→ Pages
→ Connect to Git

选择你的 GitHub 仓库。

建议配置:

Production branch:
main

Framework preset:
None

Root directory:
pages

Build command:
留空

Build output directory:
.

Cloudflare 控制台不同版本的字段名称可能略有变化。核心原则是:项目根目录必须指向 pages/,最终发布目录必须让 index.html 与 _worker.js 位于发布根目录。

然后点击:

Save and Deploy

第 3 步:测试 Pages API

部署完成后会获得:

https://你的项目.pages.dev

先测试首页。

然后打开:

https://你的项目.pages.dev/api/health

正常应返回:

{
  "ok": true,
  "service": "usque-register-relay",
  "worker": "running"
}

如果 /api/health 正常,说明:

静态页面 ✅
_worker.js ✅
_routes.json ✅
API 路由 ✅

方法 B:Pages 直接上传

如果不想连接 GitHub,可以使用 Pages 直接上传。

只上传 pages/ 目录中的内容。

最终发布根目录必须直接看到:

index.html
app.js
style.css
usque-register.js
_worker.js
_routes.json
_headers
warp-egress-selector.py

不要上传成:

/pages/index.html

否则首页路径会错误。


部署方式二:Cloudflare Workers

v6.7 同时提供完整 Workers Static Assets 版本。

进入:

workers/

Windows 一键部署

第 1 步:安装 Node.js

电脑需要安装 Node.js LTS。

安装完成后重新打开终端或资源管理器。

第 2 步:运行部署脚本

双击:

deploy-windows.bat

脚本会依次运行:

npm install
npx wrangler login
npx wrangler deploy

第一次会打开浏览器要求授权 Cloudflare。

部署完成后 Wrangler 会显示类似:

https://usque-masque-pro-v67.xxxxx.workers.dev

Linux / macOS

进入 workers/:

chmod +x deploy-linux-macos.sh
./deploy-linux-macos.sh

或者手动:

npm install
npx wrangler login
npx wrangler deploy

Workers 本地预览

npm install
npx wrangler dev

然后打开 Wrangler 输出的本地地址。


Workers 部署后测试

首页:

https://你的项目.workers.dev/

API:

https://你的项目.workers.dev/api/health

正常返回:

{
  "ok": true,
  "service": "usque-register-relay",
  "worker": "running"
}

首次使用教程

第 1 步:打开项目网页

访问:

https://你的项目.pages.dev

或:

https://你的项目.workers.dev

第 2 步:一键注册

点击网页上的 Usque / WARP 注册按钮。

注册过程通常包括:

1. 创建 WARP 设备
2. 浏览器生成 P-256 MASQUE 密钥
3. Enroll MASQUE 公钥
4. 生成原生 config.json

注册成功后建议第一时间下载:

usque-config.json

这是以后重复使用的核心文件。


第 3 步:妥善保存 config.json

建议保存在:

本机私人文件夹
加密备份
私人云盘

不要上传到:

GitHub 公共仓库
公开网盘链接
Telegram / Discord 公共频道
论坛
视频简介

因为里面包含:

private_key
access_token
设备 id
WARP 账户相关凭据

第 4 步:以后直接导入

以后再打开网页,不需要重新注册。

直接:

导入 config.json
→ 修改设置
→ 应用设置并重新生成

即可。


Clash / Mihomo 使用教程

这是本项目最推荐的使用方式。

推荐新手设置

第一次建议:

节点数量:13 或 32
网络 / 传输:QUIC / H3
Endpoint:IPv4 + IPv6 自动选择
Port:推荐端口
SNI:www.microsoft.com
DNS:Cloudflare + Google IPv4 + IPv6
MTU:1280
规则模式:完整智能分流
自动测速:开启
策略组图标:开启
节点自动去重:开启

然后点击:

应用设置并重新生成

生成 Clash 配置

顶部选择:

Clash / Mihomo

下载 YAML。


导入 Clash Verge Rev

Clash Verge Rev 中:

订阅 / 配置
→ 导入本地配置
→ 选择生成的 YAML
→ 启用配置

然后进入:

代理

应该可以看到:

地区优选
自动选择
AI自动选择
PROXY
AI
YouTube
Emby
TikTok
Netflix
Disney
...

其中每个主要服务组都可以展开查看原始 MASQUE 节点。


自动测速

自动选择 使用 url-test 对节点做延迟筛选。

推荐日常使用:

PROXY → 自动选择
YouTube → 自动选择
Netflix → 自动选择
Telegram → 自动选择

如果某个服务无法访问,可以进入对应策略组手动切换节点测试。


ChatGPT / OpenAI 简单模式

v6.7 默认推荐:

ChatGPT / OpenAI 出口 → DIRECT

规则会把关键 OpenAI 域名单独处理,例如:

chatgpt.com
openai.com
oaistatic.com
oaiusercontent.com
oaistatsig.com
openaimerge.com
workos.com
workoscdn.com
challenges.cloudflare.com

这样:

ChatGPT / OpenAI → DIRECT
YouTube / Netflix / Telegram / 其它国外流量 → WARP

适合本地网络本身能够访问 ChatGPT,但共享 WARP 出口被拒绝的情况。


DIRECT 仍打不开怎么办?

可以把:

ChatGPT / OpenAI 出口

依次尝试:

AI 自动选择
地区优选
PROXY
AI 策略组

如果 WARP 页面显示:

Unable to load site
If you are using a VPN, try turning it off.

通常说明当前 WARP 出口并不适合 ChatGPT。

增加 MASQUE 节点数量不一定能解决,因为多个入口可能仍然对应同一类 WARP 出口。


节点数量与 H2 扩展池

为什么选择 64 个,实际可能不足 64?

节点生成会自动去重。

例如:

7 个 Endpoint × 7 个 Port = 49 个唯一组合

那么即使目标选择:

64

也不会复制相同的 Endpoint:Port 来伪造 64 个节点。

网页会提示:

唯一组合不足

想要 100~500 节点

建议:

网络 / 传输:H2 / TCP
H2 扩展地址池:开启
Port:全部常用
节点数量:100 / 200 / 500

H2 模式会从扩展 IPv4 地址池生成更多唯一候选组合。

大量节点主要适合测速筛选。500 个候选节点会增加 Clash 启动、测速、UI 渲染和规则组展开的压力,日常使用通常 13~64 个已经足够。


其它输出格式

原生 Usque

下载:

usque-config.json

Windows 运行 Usque SOCKS 示例:

usque.exe -c usque-config.json socks -b 127.0.0.1 -p 1080

sing-box

项目生成的 sing-box 配置使用:

sing-box
   ↓
127.0.0.1:1080 SOCKS
   ↓
Usque
   ↓
WARP MASQUE

因此先启动 Usque:

usque.exe -c usque-config.json socks -b 127.0.0.1 -p 1080

然后:

sing-box run -c sing-box-usque.json

VLESS 本地桥接

请特别注意:

Cloudflare MASQUE ≠ VLESS

项目不会伪造一个远程 Cloudflare VLESS 服务器。

生成的是:

VLESS 127.0.0.1:2081
        ↓
sing-box 本地 VLESS inbound
        ↓
SOCKS 127.0.0.1:1080
        ↓
Usque
        ↓
WARP MASQUE

所以生成的 VLESS 链接地址是:

127.0.0.1:2081

它只能在本机使用。

如果直接导入 v2rayN 而没有启动桥接服务,测速会显示:

-1

这是正常的。

Windows 最简单方式:

1. 下载 usque-config.json
2. 下载 usque-vless-bridge.json
3. 下载 Windows 一键启动 BAT
4. 把 usque.exe 与 sing-box.exe 放在同一目录
5. 双击 BAT
6. 再在 v2rayN 测试 127.0.0.1:2081

Shadowrocket

选择:

Shadowrocket

生成适用于支持 MASQUE 配置的客户端格式。

如果客户端版本不识别相关字段,请优先使用 Clash/Mihomo,或确认客户端本身是否支持当前 MASQUE 配置。


WARP 出口国家检测(高级)

这个功能不是使用项目的必要条件。

默认建议保持折叠。

如果确实需要检查不同 MASQUE 节点实际对应的 WARP 出口,可以使用:

warp-egress-selector.py

网页还可以下载:

Windows 一键检测 BAT
出口偏好 JSON

使用条件

需要:

Clash / Mihomo 已运行
Python 3
Mihomo Controller API 可访问
Mixed Proxy 可访问

默认:

Controller:
http://127.0.0.1:9090

Mixed Proxy:
http://127.0.0.1:7890

如果 Clash Verge 使用不同端口或 Secret,需要在网页里改成实际值。


检测流程

隐藏“出口检测”策略组
        ↓
脚本逐个切换 MASQUE 节点
        ↓
通过本地代理查询真实出口
        ↓
记录 IP / 国家 / 地区 / 城市 / PoP
        ↓
测试 ChatGPT HTTP 可达性
        ↓
按偏好与延迟排序
        ↓
设置“地区优选”节点

结果会输出:

warp-egress-report-时间.json
warp-egress-report-时间.csv

升级项目

如果通过 GitHub + Pages 部署,升级最方便。

例如以后发布 v6.8:

1. 下载新版本
2. 覆盖本地 pages/ 与 workers/
3. 打开 GitHub Desktop
4. 填写 Summary
5. Commit to main
6. Push origin

Cloudflare Pages 如果已经绑定 GitHub,会自动重新部署。


常见问题

1. /api/health 打不开

先检查部署结构。

Pages 根目录必须包含:

_worker.js
_routes.json
index.html

测试:

/api/health

如果首页正常、API 404,通常是 Worker / 路由文件没有部署到正确根目录。


2. 注册提示 1015 / 429

这是 Cloudflare WARP 注册接口限流。

项目会显示等待时间。

不要连续点击注册。

建议:

等待倒计时结束
再尝试一次

已经保存 config.json 的用户无需重新注册。


3. Clash 显示节点,但全部失败

依次检查:

网络 / 传输模式
Endpoint
Port
IPv4 / IPv6 可达性
UDP 是否可用
运营商是否限制 QUIC

如果 QUIC 全部失败,可以尝试:

H2 / TCP

4. 为什么节点很多,但出口 IP 一样?

因为:

MASQUE 节点 = Cloudflare 入口候选
WARP IP      = 最终出口

不同入口可以最终使用相同或相近的 WARP 出口。

usque-custom-pro (KJGX66F/usque-custom-pro)

Searching Database…

What is this?Usque MASQUE Pro is a browser-based tool for registering Cloudflare WARP/MASQUE devices, generating proxy node configs, and converting them into Clash/Mihomo, Shadowrocket, sing-box and local VLESS bridge formats, with an optional WARP exit checker.
Is this a desktop app, or does it run as a web page I deploy myself?It is a static web page plus a serverless API that you deploy to your own Cloudflare Pages or Cloudflare Workers account; there is nothing to install locally, you just open the deployed URL in a browser.
How do I deploy and start using it?Push the repo to GitHub and connect it to Cloudflare Pages with the project root pointed at pages/, or run the included Windows one-click script (or wrangler deploy) for the Workers version; then open the deployed page and click the registration button to create a WARP/MASQUE device.
Do I need a Cloudflare account, or anything installed locally?You need a Cloudflare account to host the Pages or Workers deployment; for the Windows one-click Workers deploy script you also need Node.js LTS installed, and Wrangler handles the rest.
Does generating more MASQUE nodes get me more real exits?No — node count is not account count, and changing the MASQUE entry endpoint only changes how you reach Cloudflare's network, it does not guarantee a specific WARP exit country, so many nodes can still share the same underlying exit.
Why does the project offer a separate ChatGPT/OpenAI simple mode?A shared WARP exit IP can get blocked by ChatGPT, breaking the whole proxy setup. The simple mode routes key OpenAI domains separately so the rest of the configuration stays usable even if ChatGPT access through WARP fails.
Can the generated VLESS link be used on a remote server?No, the VLESS output only points to a local bridge service running on your own machine rather than a real remote Cloudflare VLESS server, so it only works after you start that local bridge.
What does the optional WARP exit-country checker do?It cycles through MASQUE nodes via your local Mihomo API, tests each node's actual exit IP, country, city, Cloudflare PoP and latency, and exports the results as JSON or CSV; it's optional and collapsed by default.
Creator
KJGX66F
Size
0.1 MB
Stars
1.5K
Updated
CommitSep 09
Age
1mo
Commits · 90 Days