本帖最后由 Happig_Muse 于 2024-8-25 18:55 编辑
只是个人思路,各位有意见也可以发表。发不了链接,用 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 名称),权限记得勾选 repo
- VSCode 克隆刚刚创建的仓库:按下组合键 "ctrl + shift + p",输入 "clone" 回车,输入仓库的 git 链接(由于是私有库,链接有特定格式:h-t-t-p-s://tokens-name:[email protected]/YOUR-USERNAME/YOUR-REPOSITORY.git)
- 在 VSCode 新建 json 文件,将节点配置放入。然后新建 _worker.js 文件:
- 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’ },
- });
- },
- };
复制代码
- 编辑好后,在 VSCode 左侧点击 "源码管理",全部提交(记得写 git commit),然后推送
- 在 CloudFlare 左侧点击 "Worker/Pages",新建一个 Pages,连接你的 Github 仓库即可
- 之后 Pages 会分配一个域名,根据 _worker.js 的配置,输入对应网址就会显示对应的节点配置,手机端 singbox 填上这个网址就行了
|