生成带有自定义出站和规则的sing-box配置文件直链-geodata方案
生成带有自定义出站和规则的 sing-box 配置文件直链-geodata 方案
前言:
- 本教程可以生成扩展名为 .json 文件的直链,可以一键导入使用了 sing-box 内核的客户端 如:ShellCrash 和 sing-box for Android and Apple platforms 等,详见支持 sing-box 的工具
- 生成的订阅链接地址不会改变,支持更新订阅,支持国内访问,支持同步机场节点
- 生成的订阅链接自带规则集,规则集来源 MetaCubeX/meta-rules-dat
- 本教程必须使用支持
outbound_providers
代理集合(即 Clash 订阅链接)的 sing-box PuerNya 版内核,请先确定自己机场的订阅链接是否为 Clash 订阅链接,若不是,需前往肥羊在线订阅转换工具进行转换,“生成类型”选择“Clash”,其它参数保持默认即可,转换后的订阅链接需要在末尾添加&flag=clash
,然后添加到 .json 文件outbound_providers
代理集合的download_url
中 outbound_providers
代理集合配置path
路径后,若路径中含有文件夹如:./providers/airport.yaml,需要手动新建此文件夹 providers 才能使 .yaml 订阅文件保存到本地,否则将保存到内存中( 每次启动服务都要重新下载),而在 ShellCrash 中可以连接 SSH 后执行命令mkdir -p $CRASHDIR/providers/
来新建文件夹 providers- 推荐使用 Visual Studio Code 等专业编辑器来修改配置文件
- ShellCrash 支持本地导入配置文件,可以直接将下方的 .json 直链文件内容复制到 $CRASHDIR/jsons/config.json 文件中,可代替通过 ShellCrash 配置脚本->6->2 导入配置文件的方式
一、 准备编辑 .json 直链文件
1. 注册 Gist
2. 打开编辑页面
登录并打开 Gist 可以直接编辑文件,或者鼠标点击页面右上角头像左边的“+”图标新建文件
3. 输入描述和完整文件名
“Gist description…”输入描述,随意填写;“Filename including extension…”输入完整文件名包括扩展名,如 singboxlink.json
二、 添加模板和配置文件
1. 白名单模式(没有命中规则的网络流量统统使用代理,适用于服务器线路网络质量稳定、快速,不缺服务器流量的用户)
① 添加 .json 模板
将模板内容复制到自己 Gist 新建的 .json 文件中:
1 | { |
贴一张面板效果图(举个例子:我手动选择 🇹🇼 台湾节点
策略组,而该策略组是将机场内所有台湾节点按照 url 测试结果自动选择延迟最低的台湾节点):
② 添加 dns.json
• 作用是使 DNS 能够精确解析国内外域名,国内域名走 realip,国外域名走 fakeip(属 sing-box 内核的核心功能)
• 连接 SSH 后执行 vi $CRASHDIR/jsons/dns.json
,按一下 Ins 键(Insert 键),编辑如下内容并粘贴:
1 | { |
按一下 Esc 键(退出键),输入英文冒号 :
,继续输入 wq
并回车
2. 黑名单模式(只有命中规则的网络流量才使用代理,适用于服务器线路网络质量不稳定或不够快,或服务器流量紧缺的用户。通常也是软路由用户、家庭网关用户的常用模式)
① 添加 .json 模板
将模板内容复制到自己 Gist 新建的 .json 文件中:
1 | { |
② 添加 dns.json
• 作用是使 DNS 能够精确解析国内外域名,国内域名走 realip,国外域名走 fakeip(属 sing-box 内核的核心功能)
• 连接 SSH 后执行 vi $CRASHDIR/jsons/dns.json
,按一下 Ins 键(Insert 键),编辑如下内容并粘贴:
1 | { |
按一下 Esc 键(退出键),输入英文冒号 :
,继续输入 wq
并回车
三、 修改模板和配置文件
- 将代理集合
outbound_providers
中的download_url
链接改成自己机场的订阅链接(必须为 Clash 订阅链接,详见《前言:4》) - 确定自己机场中有哪些国家或地区的节点,然后对模板文件里
outbounds
中的“国家或地区出站”以及🚀 节点选择
、📈 网络测速
和GLOBAL
下的outbounds
里面的国家或地区进行增删改
- 注:两者中的国家或地区必须一一对应,新增就全部新增,删除就全部删除,修改就全部修改(重要)
- 在
🚀 节点选择
出站下的outbounds
里,可以将最稳定的节点放在最前面,配置完成后会自动选择最稳定的节点 - 在“国家或地区出站”里,
type
为urltest
就是自动选择延迟最低的节点,将urltest
改成selector
就是手动选择节点 举个例子:我的机场有 2 个节点,分别是香港节点和日本节点,我想让哔哩哔哩(B 站)自动选择延迟最低的香港节点,AcFun(A 站)可以手动选择日本节点,这个需求怎么写? 我们可以进入 MetaCubeX/meta-rules-dat/sing/geo 后在左侧“Go to file”搜索框内分别搜索“bilibili”和“acfun”,显然可以精确搜索到结果,输入“bilibili”可以搜索到“geo/geosite/bilibili”和“geo-lite/geoip/bilibili”(须下载后缀带有“-lite”的 geoip 规则集文件),输入“acfun”仅搜索到“geo/geosite/acfun”,那么就可以这样编写:
- 注:以下只是节选,请酌情套用
1 | { |
四、 生成 .json 文件链接
编辑完成后,点击右下角的“Create secret gist”按钮,然后点击右上角的“Raw”按钮
取出地址栏中的网址,删除后面的一串随机码,完成后该 .json 文件直链才是最终生成的订阅链接,该订阅链接地址不会改变,在不更改文件名的情况下即使编辑该 .json 文件并提交了 n 次也不会改变 举例,这是原地址: https://gist.githubusercontent.com/DustinWin/40c0611fda5d6fcd0795ee5a15de7c73/raw/b3c63051134510ae9825068bbcf5219817761f57/singboxlink.json
删除后面的一串随机码(当前编辑该文件生成的随机码“b3c63051134510ae9825068bbcf5219817761f57”)
删除后变成: https://gist.githubusercontent.com/DustinWin/40c0611fda5d6fcd0795ee5a15de7c73/raw/singboxlink.json
五、 导入订阅链接(以 ShellCrash 导入订阅链接为例)
进入 ShellCrash 配置脚本->6->2,粘贴最终生成的订阅链接即可,具体设置请参考《[ShellCrash 配置-geodata 方案](https://github.com/DustinWin/clash_singbox-tutorials/blob/main/教程合集/sing-box/基础篇/ShellCrash 配置-geodata 方案.md)》
六、 私人定制
到了这里,相信你对里面的机制已经有了一定的认识,那么我们可以对自己的需求进行定制了 最常见的有:我购买的机场支持奈飞和亚马逊,但仅新加坡这一个节点支持亚马逊,日本和韩国节点支持奈飞,这个规则怎么写?
- 进入 MetaCubeX/meta-rules-dat/sing/geo 后在左侧“Go to file”搜索框内分别搜索“netflix”和“primevideo”
- 输入“netflix”可以搜索到“geo/geosite/netflix”和“geo/geoip/netflix”,输入“primevideo”仅搜索到“geo/geosite/primevideo”,那么我们可以这样编写:
- 注:以下只是节选,请酌情套用
1 | { |