156 lines
5.1 KiB
Markdown
156 lines
5.1 KiB
Markdown
# Codex 注册扩展更新与 Clash Verge 非港轮询配置教程
|
||
|
||
本教程用于说明如何更新 `Codex 注册扩展`,以及如何在 `Clash Verge` 中配置 `🔁 非港轮询`。
|
||
|
||
## 适用场景
|
||
|
||
- 已经安装本扩展,想更新到最新版本
|
||
- 想用更方便的方式长期同步扩展更新
|
||
- 需要在 `Clash Verge` 中启用 `🔁 非港轮询`
|
||
|
||
## 准备内容
|
||
|
||
- 已安装好的扩展文件夹
|
||
- 可以打开浏览器的 `扩展程序管理` 页面
|
||
- 如需使用 `git pull`,本地已安装 `git`
|
||
- 如需使用 `GitHub Desktop`,本地已安装 `GitHub Desktop`
|
||
- 已安装 `Clash Verge`,并已导入可用订阅
|
||
|
||
## 操作步骤
|
||
|
||
### 第一部分:更新扩展
|
||
|
||
1. 使用 `GitHub Desktop` 更新
|
||
先安装 `GitHub Desktop`。
|
||
把当前扩展仓库交给 `GitHub Desktop` 管理后,之后就可以随时更新。
|
||
`GitHub Desktop` 的具体使用方法本教程不展开,需要时可直接询问豆包。
|
||
|
||
2. 使用 `git pull` 更新(最方便,最推荐)
|
||
先在本地安装 `git`。
|
||
打开终端后执行 `cd 扩展文件夹路径` 进入当前扩展目录。
|
||
接着执行 `git pull` 拉取最新更新。
|
||
这是最方便、最推荐的更新方式。
|
||
|
||
3. 手动下载最新版本覆盖更新
|
||
点击左上角的版本号或 `更新` 按钮。
|
||
下载最新版本到本地后,直接覆盖现有扩展文件夹即可。
|
||
|
||
4. 更新完成后重新加载扩展
|
||
不论使用哪种更新方式,更新完成后都必须打开浏览器的 `扩展程序管理` 页面。
|
||
找到该扩展后,手动点击一次 `重新加载`。
|
||
这一步一定要做,否则浏览器可能仍在使用旧版本。
|
||
|
||
### 第二部分:配置 `Clash Verge` 的 `🔁 非港轮询`
|
||
|
||
#### 第一步:添加扩展脚本
|
||
|
||
1. 打开 `Clash Verge`,进入左侧的 `订阅`(`Profiles`)界面。
|
||
2. 在右上角或对应位置找到并双击打开 `全局扩展脚本`(`Merge/Script`)。
|
||
3. 将里面的内容全部清空,替换为下方格式化好的代码。
|
||
4. 点击保存,使用右上角保存按钮或按 `Ctrl+S`。
|
||
|
||
💻 格式化后的代码(如果遇到格式错误,则让豆包修复一下)
|
||
|
||
```javascript
|
||
function uniqPrepend(arr, items) {
|
||
if (!Array.isArray(arr)) arr = [];
|
||
for (var i = items.length - 1; i >= 0; i--) {
|
||
var item = items[i];
|
||
var exists = false;
|
||
for (var j = 0; j < arr.length; j++) {
|
||
if (arr[j] === item) {
|
||
exists = true;
|
||
break;
|
||
}
|
||
}
|
||
if (!exists) arr.unshift(item);
|
||
}
|
||
return arr;
|
||
}
|
||
|
||
function upsertGroup(groups, group) {
|
||
for (var i = 0; i < groups.length; i++) {
|
||
if (groups[i] && groups[i].name === group.name) {
|
||
groups[i] = group;
|
||
return groups;
|
||
}
|
||
}
|
||
groups.unshift(group);
|
||
return groups;
|
||
}
|
||
|
||
function main(config, profileName) {
|
||
if (!config) return config;
|
||
|
||
if (!Array.isArray(config["proxy-groups"])) {
|
||
config["proxy-groups"] = [];
|
||
}
|
||
|
||
var groups = config["proxy-groups"];
|
||
var LB_NAME = "🔁 非港轮询";
|
||
|
||
var excludeRegex =
|
||
"(?i)(" +
|
||
"香港|hong[ -]?kong|\\bhk\\b|\\bhkg\\b|🇭🇰" +
|
||
"|剩余流量|套餐到期|下次重置剩余|重置剩余|到期时间|流量重置" +
|
||
"|traffic|expire|expiration|subscription|subscribe|reset|plan" +
|
||
")";
|
||
|
||
groups = upsertGroup(groups, {
|
||
name: LB_NAME,
|
||
type: "load-balance",
|
||
strategy: "round-robin",
|
||
"include-all-proxies": true,
|
||
"exclude-filter": excludeRegex,
|
||
url: "https://www.gstatic.com/generate_204",
|
||
interval: 300,
|
||
lazy: true,
|
||
"expected-status": 204
|
||
});
|
||
|
||
var injected = false;
|
||
var entryNameRegex = /节点选择|代理|Proxy|PROXY|默认|GLOBAL|全局|选择/i;
|
||
|
||
for (var i = 0; i < groups.length; i++) {
|
||
var g = groups[i];
|
||
if (!g || g.type !== "select") continue;
|
||
|
||
if (entryNameRegex.test(g.name || "")) {
|
||
if (!Array.isArray(g.proxies)) g.proxies = [];
|
||
g.proxies = uniqPrepend(g.proxies, [LB_NAME]);
|
||
injected = true;
|
||
}
|
||
}
|
||
|
||
if (!injected) {
|
||
for (var k = 0; k < groups.length; k++) {
|
||
var g2 = groups[k];
|
||
if (g2 && g2.type === "select") {
|
||
if (!Array.isArray(g2.proxies)) g2.proxies = [];
|
||
g2.proxies = uniqPrepend(g2.proxies, [LB_NAME]);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
config["proxy-groups"] = groups;
|
||
return config;
|
||
}
|
||
```
|
||
|
||
#### 第二步:应用设置
|
||
|
||
1. 切换到左侧的 `代理`(`Proxies`)界面,也就是首页。
|
||
2. 在顶部的分类中,通常会看到 `节点选择`、`Proxy` 或 `当前节点` 之类的分组。
|
||
3. 在对应下拉框中选择 `🔁 非港轮询`。
|
||
4. 确认右上角的 `代理模式`(`Mode`)已经设置为 `规则模式`(`Rule`)。
|
||
5. 确认左侧 `设置` 中的 `系统代理`(`System Proxy`)已经开启。
|
||
|
||
|
||
## 注意事项
|
||
|
||
- 不论使用哪种方式更新扩展,更新完成后都必须在浏览器的 `扩展程序管理` 页面重新加载一次该扩展。
|
||
- 如果你长期更新扩展,优先使用 `git pull`,这是最方便、最推荐的方式。
|
||
- 使用手动覆盖更新时,请直接覆盖当前扩展文件夹,避免同时保留多份不同版本的目录。
|
||
- 在 `Clash Verge` 中粘贴脚本时,请先清空旧内容,再完整粘贴新代码并保存。
|