- 进入 Workers & Pages → D1。
- 创建一个任意名称的数据库,例如
subscribe-rewrite
。
-
进入刚刚创建的数据库。
-
创建数据表。
-
进入控制台(console),执行以下 SQL 语句:
CREATE TABLE groups ( cipher TEXT, source TEXT, priority INTEGER DEFAULT '0', `index` INTEGER DEFAULT '0', action TEXT DEFAULT 'must add', value TEXT, proxies TEXT ); CREATE TABLE proxies ( cipher TEXT, source TEXT, priority INTEGER DEFAULT '0', `index` INTEGER DEFAULT '0', action TEXT DEFAULT 'must add', value TEXT ); CREATE TABLE rules ( cipher TEXT, source TEXT, priority INTEGER DEFAULT '0', `index` INTEGER DEFAULT '0', action TEXT DEFAULT 'must add', value TEXT ); CREATE TABLE others ( cipher TEXT, source TEXT, priority INTEGER DEFAULT '0', `index` INTEGER DEFAULT '0', action TEXT DEFAULT 'must add', field TEXT, value TEXT );
- 创建一个 Worker。
- 复制
worker.js
中的代码,替换开头的const CIPHER_LIST = ["xxx1", "xxx2"]
中的密钥,替换xxx...
部分,不填的话则不使用密钥。注意不要包含 "&" 和 "," 否则验证无法通过!!!
建议添加了节点的务必填入密钥,否则别人访问你的服务也能使用你添加的节点!!!
- 将整个js内容,替换 Worker 的 JavaScript 代码并部署。
- 进入 设置 → 变量 → D1 数据库绑定。
- 绑定刚刚创建的数据库,变量名为:
DB
。
通过 Worker 地址,cipher
、source
和 config
参数拼接为订阅链接。例如:
https://example.workers.dev/?cipher=xxx&source=surge&config=https%3A%2F%2Fsub.example.com
https://example.workers.dev/?cipher=xxx1,xxx2,xxx3&source=clash&config=https%3A%2F%2Fsub.example.com
注意:订阅地址可能需要编码,如果cipher
有多个密钥,以,
分隔,且必须每个都有效才行!!!
Proxy -> Rule -> Group -> Others
用途:操作分组相关信息。
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
cipher | TEXT | 支持的密钥 可多个,以 , 分隔,不填则都支持。 |
|
source | TEXT | 支持的来源 可以填写 surge 、clash 如果不填则适用于所有来源。 |
|
priority | INTEGER | 0 | 排序字段,正序排列 优先级越低越先执行 0 表示最先执行。 |
index | INTEGER | 0 | 插入的索引位置 0 表示最末尾 1 表示第一位。 |
action | TEXT | 'must add' | 操作类型must add :必须添加,如果value 不存在则会创建add :添加,如果value 不存在则忽略set :设置,如果不存在会创建,将value 的值设置为proxies 中的值remove :删除,如果没有 proxies 值,会删除组名为value 以及组内为value 的如果存在 proxies ,则只会删除value 组内的proxies 值 |
value | TEXT | 组名 可多个,以 , 分隔* 表示所有- 表示排除,需要排除的每个元素前都要加上-例如: *, -🚀 节点选择 表示除了🚀 节点选择 以外的所有组 |
|
proxies | TEXT | 相关代理信息,可以为节点名,或者组名 当为组名时,不存在不会创建,即使 action 为 must add 可多个,以 , 分隔* 表示所有- 表示排除,需要排除的每个元素前都要加上- |
用途:操作节点相关信息。
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
cipher | TEXT | 支持的密钥 可多个,以 , 分隔,不填则都支持。 |
|
source | TEXT | 支持的来源,可以填写 surge 、clash ,如果不填则适用于所有来源。 |
|
priority | INTEGER | 0 | 排序字段,正序排列,优先级越低越先执行,0 表示最先执行。 |
index | INTEGER | 0 | 插入的索引位置,0 表示最末尾,1 表示第一位。 |
action | TEXT | 'must add' | 操作类型must add :等同于add add :添加,如果节点名存在,会忽略set :不支持 remove :删除,会同时将节点从所有组内移除 |
value | TEXT | add 时,值为整个节点信息,可以为surge、clash格式的,会根据来源自动转换,不支持多条!例如: {name: **, server: abc.com, port: 1111...} 或者 香港 = vmess, abc.com, 43022, username=5180cd6f-1111 remove 时,传入节点名称即可,可多个,以, 分隔* 表示所有- 表示排除,需要排除的每个元素前都要加上- |
用途:操作规则相关信息。
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
cipher | TEXT | 支持的密钥 可多个,以 , 分隔,不填则都支持。 |
|
source | TEXT | 支持的来源,可以填写 surge 、clash ,如果不填则适用于所有来源。 |
|
priority | INTEGER | 0 | 排序字段,正序排列,优先级越低越先执行,0 表示最先执行。 |
index | INTEGER | 0 | 插入的索引位置,0 表示最末尾,1 表示第一位。 |
action | TEXT | 'must add' | 操作类型must add :等同于add add :添加,如果value 存在则忽略set :不支持 remove :删除 |
value | TEXT | 值,例如:DOMAIN,example.com,🚀 节点选择 |
用途:操作其他类型的信息。
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
cipher | TEXT | 支持的密钥 可多个,以 , 分隔,不填则都支持。 |
|
source | TEXT | 支持的来源,可以填写 surge 、clash ,如果不填则适用于所有来源。 |
|
priority | INTEGER | 0 | 排序字段,正序排列,优先级越低越先执行,0 表示最先执行。 |
index | INTEGER | 0 | 插入的索引位置,0 表示最末尾,1 表示第一位。 |
action | TEXT | 'must add' | 操作类型must add :必须添加,如果field 不存在则会创建add :添加,如果field 不存在则忽略set :设置,如果不存在会创建,将值设置为value remove :删除,如果没有 value 值,则会删除最后一级的field 字段 |
field | TEXT | 要操作的字段,如果有多级层级关系,用逗号分隔每一级。 | |
value | TEXT | 值,不支持多个值 ,会将整个value当成一个元素去判断是否重复等操作 |
在groups
表中将节点加入到组内,must add
模式下,💬 OpenAi
不存在也会自动创建
source | priority | index | action | value | proxies | cipher |
---|---|---|---|---|---|---|
0 | 1 | must add | 💬 OpenAi | *,-美国1 |
在groups
表中,*
此次表示所有节点,-
表示排除美国1
、,美国2
节点,如果proxies
没有值,将会删除💬 OpenAi
这个组
source | priority | index | action | value | proxies | cipher |
---|---|---|---|---|---|---|
0 | 1 | remove | 💬 OpenAi | *,-美国1,-美国2 |
在proxies
表中添加节点信息
source | priority | index | action | value | cipher |
---|---|---|---|---|---|
0 | 1 | must add | {name: **a, server: abc.com, port: 1111...} | ||
1 | 2 | must add | 美国a = vmess, abc.com, 43022, username=5180cd6f-1111 |
在groups
表中将节点加入到组内,must add
模式下,🚀 节点选择
不存在也会自动创建
source | priority | index | action | value | proxies | cipher |
---|---|---|---|---|---|---|
0 | 1 | must add | 🚀 节点选择 | **a, 美国a |
在proxies
表中添加节点信息
source | priority | index | action | value | cipher |
---|---|---|---|---|---|
0 | 1 | must add | {name: **a, server: abc.com, port: 1111...} | ||
1 | 2 | must add | 美国a = vmess, abc.com, 43022, username=5180cd6f-1111 |
在groups
表中创建组并添加到 🚀 节点选择
组
source | priority | index | action | value | proxies | cipher |
---|---|---|---|---|---|---|
1 | 0 | must add | 📡 私有节点 | **a, 美国a | ||
2 | 1 | must add | 🚀 节点选择 | 📡 私有节点 |
在groups
表,此时*
则表示所有的组,也可以使用-
来排除某个组
source | priority | index | action | value | proxies | cipher |
---|---|---|---|---|---|---|
2 | 1 | must add | * | **a,📡 私有节点 |
在proxies
表中添加节点信息,会删除当前节点,并且也会从所有组里面删除当前节点
source | priority | index | action | value | cipher |
---|---|---|---|---|---|
0 | 1 | remove | 美国1 |
在rules
表添加规则
source | priority | index | action | value | cipher |
---|---|---|---|---|---|
0 | 1 | must add | DOMAIN,generativelanguage.googleapis.com,📡 私有节点 |
如果不存在当前组,则在groups
表中创建当前组,*
则表示添加所有的节点到当前组内
source | priority | index | action | value | proxies | cipher |
---|---|---|---|---|---|---|
0 | 1 | must add | 📡 私有节点 | * |
在others
表中,此时会先找到分组General
,其次找到skip-proxy
字段,将value
添加到index
的位置,0
则加到末尾
source | priority | index | action | field | value | cipher |
---|---|---|---|---|---|---|
surge | 0 | 0 | must add | General,skip-proxy | *.dev.com, *.test.com |
在others
表中,此时会先找到分组MITM
,其次找到hostname
字段,将hostname
的值设置为*:0
source | priority | index | action | field | value | cipher |
---|---|---|---|---|---|---|
surge | 0 | 0 | set | MITM,hostname | *:0 |
在others
表中,此时会先找到log-level
,将log-level
的值设置为warn
source | priority | index | action | field | value | cipher |
---|---|---|---|---|---|---|
clash | 0 | 0 | set | log-level | warn |
在others
表中,此时会先找到allow-lan
,删除当前字段
source | priority | index | action | field | value | cipher |
---|---|---|---|---|---|---|
clash | 0 | 0 | remove | allow-lan |
- 解决方案: 订阅地址需要编码。
- 解决方案: 检查密钥是否正确,或者密钥中是否含有
&
或,
,这可能导致验证失败。
- 解决方案: 新建一个空配置,然后在网页上打开你部署后的订阅地址,将内容复制到配置中。之后可以直接更新配置。
- 解决方案: 建议指定
source
,并填入对应格式的节点信息。