全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 463|回复: 1

[经验] (思路)Sing-Box 自建节点客户端配置转换成订阅链接

[复制链接]
发表于 2024-8-25 18:55:43 | 显示全部楼层 |阅读模式
本帖最后由 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:tokens@github.com/YOUR-USERNAME/YOUR-REPOSITORY.git)
  • 在 VSCode 新建 json 文件,将节点配置放入。然后新建 _worker.js 文件:
    1. let tokens = {
    2.   'uuid1': 'Fake.json',
    3.   'uuid2': 'ALL_Fake.json',
    4.   'uuid3': 'Hy2_Fake.json'
    5. };        // 建议随机生成一串 uuid 替换前面的键,后面的值对应你的配置文件,之后输入正确的网址才会显示对应文件内容(例如,我的 Pages 域名是 test.config.com,那么我在浏览器输入 h-t-t-p-s://test.config.com/uuid2 就会对应显示文件 ALL_Fake.json 的内容)

    6. let githubUsername = 'Github_username'; // 替换为你的 GitHub 用户名
    7. let repoName = 'REPOSITORY_name'; // 替换为你的 GitHub 仓库名
    8. let githubToken = 'Token'; // 替换为你的 GitHub Token

    9. export default {
    10.   async fetch(request) {
    11.     const url = new URL(request.url);
    12.     const token = url.pathname.substring(1);

    13.     if (tokens[token]) {
    14.       const fileName = tokens[token];
    15.       const githubUrl = `h-t-t-p-s://raw.githubusercontent.com/${githubUsername}/${repoName}/main/${fileName}`;

    16.       try {
    17.         const response = await fetch(githubUrl, {
    18.           headers: {
    19.             'Authorization': `Bearer ${githubToken}`,
    20.           },
    21.         });

    22.         if (response.ok) {
    23.           const content = await response.text();
    24.           return new Response(content, {
    25.             headers: { 'Content-Type': 'application/json' },
    26.           });
    27.         }
    28.       } catch (error) {
    29.         // 如果需要可以添加日志记录或调试信息,但不显示给用户
    30.       }
    31.     }

    32.     return new Response('密码错误,应输入纯字母的 md5 加密和光栅加密!', {
    33.       status: 404,
    34.       headers: { 'Content-Type': 'text/plain' },
    35.     });
    36.   },
    37. };
    复制代码

  • 编辑好后,在 VSCode 左侧点击 "源码管理",全部提交(记得写 git commit),然后推送
  • 在 CloudFlare 左侧点击 "Worker/Pages",新建一个 Pages,连接你的 Github 仓库即可
  • 之后 Pages 会分配一个域名,根据 _worker.js 的配置,输入对应网址就会显示对应的节点配置,手机端 singbox 填上这个网址就行了
发表于 2024-8-25 18:57:42 来自手机 | 显示全部楼层
订阅不是事,负载均衡故障转移才是真正的麻烦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-9-22 01:30 , Processed in 0.070128 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表