只是个人思路,各位有意见也可以发表。发不了链接,用 h-t-t-p-s 代替(包括代码部分)
Sing-Box 自建节点的客户端配置是 json 文件,每次修改完配置,手机端都需要手动修改,很麻烦。而网络上的在线订阅转换网站,都是对 V2rayN 和 Clash For Windows 的 URL 链接进行转换,并没有对 json 文件进行转换。
手机端要使用远程订阅的话,可以将 json 文件部署到自己的 VPS 中或者 Github,输入指定网址进行订阅。我的思路是在 Github 创建一个私有库,将节点配置 json 文件放入,用 CloudFlare Pages 进行同步,Pages 会自动分配一个域名,通过这个域名输入指定路径显示对应 json 文件内容。下面简单的给出步骤:
在 Github 点击右上角个人头像选择 "Your Repositories",然后创建新库,记得勾选 Private(私人)来到 h-t-t-p-s://github.com/settings/tokens 创建 Github Token,填写 Note(Token 名称),权限记得勾选 repoVSCode 克隆刚刚创建的仓库:按下组合键 "ctrl + shift + p",输入 "clone" 回车,输入仓库的 git 链接(由于是私有库,链接有特定格式:h-t-t-p-s://tokens-name:[email protected]/YOUR-USERNAME/YOUR-REPOSITORY.git)在 VSCode 新建 json 文件,将节点配置放入。然后新建 _worker.js 文件:[ol]let tokens = {
'uuid1': 'Fake.json',
'uuid2': 'ALL_Fake.json',
'uuid3': 'Hy2_Fake.json'
}; // 建议随机生成一串 uuid 替换前面的键,后面的值对应你的配置文件,之后输入正确的网址才会显示对应文件内容(例如,我的 Pages 域名是 test.config.com,那么我在浏览器输入 h-t-t-p-s://test.config.com/uuid2 就会对应显示文件 ALL_Fake.json 的内容)
let githubUsername = 'Github_username'; // 替换为你的 GitHub 用户名
let repoName = 'REPOSITORY_name'; // 替换为你的 GitHub 仓库名
let githubToken = 'Token'; // 替换为你的 GitHub Token
export default {
async fetch(request) {
const url = new URL(request.url);
const token = url.pathname.substring(1);
if (tokens[token]) {
const fileName = tokens[token];
const githubUrl = `h-t-t-p-s://raw.githubusercontent.com/${githubUsername}/${repoName}/main/${fileName}`;
try {
const response = await fetch(githubUrl, {
headers: {
'Authorization': `Bearer ${githubToken}`,
},
});
if (response.ok) {
const content = await response.text();
return new Response(content, {
headers: { 'Content-Type': 'application/json' },
});
}
} catch (error) {
// 如果需要可以添加日志记录或调试信息,但不显示给用户
}
}
return new Response('密码错误,应输入纯字母的 md5 加密和光栅加密!', {
status: 404,
headers: { 'Content-Type': 'text/plain' },
});
},
};[/ol]复制代码
编辑好后,在 VSCode 左侧点击 "源码管理",全部提交(记得写 git commit),然后推送在 CloudFlare 左侧点击 "Worker/Pages",新建一个 Pages,连接你的 Github 仓库即可之后 Pages 会分配一个域名,根据 _worker.js 的配置,输入对应网址就会显示对应的节点配置,手机端 singbox 填上这个网址就行了