Files
subconverter/README-cn.md
MelosBot 48568a950f Update README-cn.md (#33)
Makes creating token faster and fixes a few things
2020-01-05 21:35:11 +08:00

16 KiB
Raw Blame History

subconverter

在各种订阅格式之间进行转换的实用程序.

Build Status

支持类型

类型 作为源类型 作为目标类型 参数
Clash clash
ClashR clashr
Quantumult quan
Quantumult X quanx
SS (SIP002) ss
SSD ssd
SSR ssr
Surfboard surfboard
Surge 2 surge&ver=2
Surge 3 surge&ver=3
Surge 4 surge&ver=4
V2Ray v2ray

注意Shadowrocket 用户可以使用 ssssr以及 v2ray参数


简易用法

即生成的配置文件默认套用 神机规则

调用地址

http://127.0.0.1:25500/sub?target=%TARGET%&url=%URL%&config=%CONFIG%

调用说明

调用参数 必要性 示例 解释
target 必要 surge&ver=4 指想要生成的配置类型,详见上方 支持类型 中的参数
url 必要 https%3A%2F%2Fwww.xxx.com 指机场所提供的订阅链接,需要经过 URLEncode 处理
config 可选 https%3A%2F%2Fwww.xxx.com 指远程 pref.ini (包含分组和规则部分),需要经过 URLEncode 处理,可查看 示例仓库 寻找灵感,默认加载本地设置文件

运行 subconverter 主程序后,按照 调用说明 的对应内容替换即可得到一份使用神机规则的配置文件。

此外,如果你需要将多个订阅合成一份, 则要在上方所提及的 URLEncode 之前使用 '|' 来分隔链接。

举个例子:

有以下两个订阅,且想合并转换成 Clash 的订阅:
1. https://dler.cloud/subscribe/ABCDE?clash=vmess
2. https://rich.cloud/subscribe/ABCDE?clash=vmess

首先使用 '|' 将两个订阅分隔开:
https://dler.cloud/subscribe/ABCDE?clash=vmess|https://rich.cloud/subscribe/ABCDE?clash=vmess

接着通过 URLEncode 后可以得到:
https%3A%2F%2Fdler.cloud%2Fsubscribe%2FABCDE%3Fclash%3Dvmess%7Chttps%3A%2F%2Frich.cloud%2Fsubscribe%2FABCDE%3Fclash%3Dvmess

然后将想要的 %TARGET% (即 clash) 和上一步所得到的 %URL% 填入调用地址中:
http://127.0.0.1:25500/sub?target=clash&url=https%3A%2F%2Fdler.cloud%2Fsubscribe%2FABCDE%3Fclash%3Dvmess%7Chttps%3A%2F%2Frich.cloud%2Fsubscribe%2FABCDE%3Fclash%3Dvmess

最后将该链接填写至 Clash 的订阅处就大功告成了。

进阶用法

在不满足于本程序所提供的神机规则或者对应的分组时,可以考虑尝试进阶用法

即 对 调用地址 甚至程序目录下的 pref.ini 进行个性化的编辑以满足不同的需求

阅前提示

在进行下一步操作前,十分推荐您阅读以下内容:

  1. pref.ini 相关的:INI 语法介绍
  2. Clash 配置相关的: YAML 语法介绍
  3. 会经常涉及到的: 正则表达式入门
  4. 当遇到问题需要提交 ISSUE 时的: 提问的智慧

当您尝试进行进阶操作时,即默认您有相关的操作能力,本程序仅保证在默认配置文件下能够正常运行。

进阶地址

调用地址 (进阶)

http://127.0.0.1:25500/sub?target=%TARGET%&url=%URL%&emoji=%EMOJI%····

调用说明 (进阶)

调用参数 必要性 示例 解释
target 必要 surge&ver=4 指想要生成的配置类型,详见上方 支持类型 中的参数
url 可选 https%3A%2F%2Fwww.xxx.com 指机场所提供的订阅链接,需要经过 URLEncode 处理,可选的前提是在 default_url 中进行指定
config 可选 https%3A%2F%2Fwww.xxx.com 指远程 pref.ini (包含分组和规则部分),需要经过 URLEncode 处理,可查看 示例仓库 寻找灵感,默认加载本地设置文件
upload 可选 true / false 指将生成的订阅文件上传至 Gist,需要填写gistconf.ini,默认为 false (即不上传)
emoji 可选 true / false 指在节点名称前加入 Emoji默认为 true
group 可选 MySS 指设置该订阅的组名,多用于 SSD/SSR
tfo 可选 true / false 指开启该订阅链接的 TCP Fast Open默认为 false
udp 可选 true / false 指开启该订阅链接的 UDP默认为 false
scv 可选 true / false 指关闭 TLS 节点的证书检查,默认为 false
list 可选 true / false 指输出 Surge nodelist 或者 Clash proxy provider
sort 可选 true / false 指对输出的节点或策略组进行再次排序,默认为 false
include 可选 详见下文中 include_remarks 指仅保留匹配到的节点,支持正则匹配,需要经过 URLEncode 处理,会覆盖配置文件里的设置
exclude 可选 详见下文中 exclude_remarks 指排除匹配到的节点,支持正则匹配,需要经过 URLEncode 处理,会覆盖配置文件里的设置

举个例子:

有订阅 `https://dler.cloud/subscribe/ABCDE?clash=vmess`,想转换成 Surge 4 的订阅,且需要开启 TFO 和 UDP
顺便再给节点名加上 EMOJI 同时排除掉订阅中显示流量和官网的节点(节点名为"剩余流量1024G""官网地址dler.cloud"

首先确认需要用到的参数:
target=surge&ver=4 、 tfo=true 、 udp=true 、 emoji=true 、exclude=(流量|官网)
url=https://dler.cloud/subscribe/ABCDE?clash=vmess

然后将需要 URLEncode 的部分进行处理:
exclude=%28%E6%B5%81%E9%87%8F%7C%E5%AE%98%E7%BD%91%29
url=https%3A%2F%2Fdler.cloud%2Fsubscribe%2FABCDE%3Fclash%3Dvmess

接着将所有元素进行拼接:
http://127.0.0.1:25500/sub?target=surge&ver=4&tfo=true&udp=true&emoji=true&exclude=%28%E6%B5%81%E9%87%8F%7C%E5%AE%98%E7%BD%91%29&url=https%3A%2F%2Fdler.cloud%2Fsubscribe%2FABCDE%3Fclash%3Dvmess

最后将该链接填写至 Surge 的订阅处就大功告成了。

配置文件

关于 subconverter.exe 目录中 pref.ini 文件的解释

[common] 部分

该部分主要涉及到的内容为 全局的节点排除或保留节点的重命名

其他设置项目可以保持默认或者在知晓作用的前提下进行修改

  1. api_mode

    API 模式,设置为 true 以防止直接加载本地订阅或直接提供本地文件。(多用于架设于服务器上)

    • 当值为 false 时, 每次更新配置都会读取 pref.ini , 为 true 时则仅启动时读取。
  2. default_url

    无 %URL% 参数时,默认加载的订阅链接, 不需要 URLEncode。 如果有多个链接,仍然需要使用 "|" 分隔,支持文件/url

    • 例如:
    default_url='https://dler.cloud/subscribe/ABCDE?clash=vmess'
    
    • 解释:
    此时订阅链接:
    http://127.0.0.1:25500/sub?target=clash
    等同于:
    http://127.0.0.1:25500/sub?target=clash&url=https%3A%2F%2Fdler.cloud%2Fsubscribe%2FABCDE%3Fclash%3Dvmess
    
  3. exclude_remarks

    排除匹配到的节点,支持正则匹配

    • 例如:
    exclude_remarks=(流量|时间|官网|产品)
    
  4. include_remarks

    仅保留匹配到的节点,支持正则匹配

    • 例如:
    include_remarks=(?<=美).*(BGP|GIA|IPLC)
    
  5. clash_rule_base

    生成的 Clash 配置文件基础。支持 本地文件在线URL

    • 例如:
    clash_rule_base=clash.yaml # 加载本地的 clash.yaml 文件作为基础
    # 或者
    clash_rule_base=https://raw.githubusercontent.com/ConnersHua/Profiles/master/Clash/Pro.yaml
    # 加载神机的 Github 中相关文件作为基础
    
  6. surge_rule_base

    生成的 Surge 配置文件基础,用法同上

  7. surfboard_rule_base

    生成的 Surfboard 配置文件基础,用法同上

  8. mellow_rule_base

    生成的 Mellow 配置文件基础,用法同上

  9. proxy_ruleset

    更新 RuleSet 时是否使用代理

    填写 NONE 或者空白禁用,或者填写 SYSTEM 使用系统代理

    也可填写如同 socks5://127.0.0.1:1080 的 HTTP 或 SOCKS 代理

    • 例如:
    proxy_ruleset=SYSTEM # 使用系统代理
    # 或者
    proxy_ruleset=socks5://127.0.0.1:1080 # 使用本地的 1080 端口进行 SOCKS5 代理
    
  10. proxy_subscription

    更新 原始订阅 时是否使用代理,用法同上

  11. append_proxy_type

    节点名称是否需要加入属性,设置为 true 时在节点名称前加入 [SS] [SSR] [VMess] 以作区别,

    默认为 false

    • 例如(设置为 true时
    [SS] 香港中转
    [VMess] 美国 GIA
    
  12. rename_node

    重命名节点,支持正则匹配

    使用方式:原始命名@重命名

    • 例如:
    rename_node=中国@中
    rename_node=\(?((x|X)?(\d+)(\.?\d+)?)((\s?倍率?:?)|(x|X))\)?@(倍率:$1)
    

[node_pref] 部分

该部分主要涉及到的内容为 开启节点的UDP及TCP重命名节点后的排序

相关设置项目建议保持默认或者在知晓作用的前提下进行修改

  1. udp_flag

    为节点打开 UDP 模式,设置为 true 时打开,默认为 false

    • 当不清楚机场的设置时请勿调整此项
  2. tcp_fast_open_flag

    为节点打开 TFO (TCP Fast Open) 模式,设置为 true 时打开,默认为 false

    • 当不清楚机场的设置时请勿调整此项
  3. sort_flag

    对生成的订阅中的节点进行 A-Z 的排序,设置为 true 时打开,默认为 false

  4. skip_cert_verify_flag

    关闭 TLS 节点的证书检查。设置为 true 时打开,默认为 false

    • 请勿随意将此设置修改为 true

[managed_config] 部分

该部分主要涉及到的内容为 订阅文件的更新地址

  1. write_managed_config

    是否将'!MANAGED-CONFIG'信息附加到 Surge 或 Surfboard 配置,设置为 true 时打开,默认为 true

  2. managed_config_prefix

    具体的 '#!MANAGED-CONFIG' 信息,地址前缀不用添加 "/"。Surge 或 Surfboard 会向此地址发出更新请求

    局域网用户需要将此处改为本程序运行设备的局域网 ip

    • 例如:
    managed_config_prefix = http://192.168.1.5:25500
    

[surge_external_proxy] 部分

为 Surge 添加 SSR 的支持路径

[emojis] 部分

  1. add_emoji

    是否在节点名称前加入下面自定义的 Emoji设置为 true 时打开,默认为 true

  2. remove_old_emoji

    是否移除原有订阅中存在的 Emoji设置为 true 时打开,默认为 true

  3. rule

    在匹配到的节点前添加自定义 emojis支持正则匹配

    • 例如:
    rule=(流量|时间|应急),⌛time
    rule=(美|美国|United States),🇺🇸
    

[ruleset] 部分

如果你对原本订阅自带的规则不满意时,可以使用如下配置

  1. enabled

    启用自定义规则集的总开关,设置为 true 时打开,默认为 true

  2. overwrite_original_rules

    覆盖原有规则,即 [common] 中 xxx_rule_base 中的内容,设置为 true 时打开,默认为 false

  3. update_ruleset_on_request

    根据请求执行规则集更新,设置为 true 时打开,默认为 false

  4. surge_ruleset

    从本地或 url 获取规则片段

    [] 前缀后的文字将被当作规则,而不是链接或路径,主要包含 []GEOIP[]MATCH(等同于 []FINAL)。

    • 例如:
    surge_ruleset=🍎 苹果服务,https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Apple.list
    # 表示引用 https://raw.githubusercontent.com/ConnersHua/Profiles/master/Surge/Ruleset/Apple.list 规则
    # 且将此规则指向 [clash_proxy_group] 所设置 🍎 苹果服务 策略组
    surge_ruleset=🎯 全球直连,rules/NobyDa/Surge/Download.list
    # 表示引用本地 rules/NobyDa/Surge/Download.list 规则
    # 且将此规则指向 [clash_proxy_group] 所设置 🎯 全球直连 策略组
    surge_ruleset=🎯 全球直连,[]GEOIP,CN
    # 表示引用 GEOIP 中关于中国的所有 IP
    # 且将此规则指向 [clash_proxy_group] 所设置 🎯 全球直连 策略组
    

[clash_proxy_group] 部分

为 Clash 、Mellow 、Surge 以及 Surfboard 等程序创建策略组, 可用正则来筛选节点

[] 前缀后的文字将被当作引用策略组

custom_proxy_group=🍎 苹果服务`url-test`(美国|US)`http://www.gstatic.com/generate_204`300
# 表示创建一个叫 🍎 苹果服务 的 url-test 策略组,并向其中添加名字含'美国','US'的节点每隔300秒测试一次
custom_proxy_group=🇯🇵 日本延迟最低`url-test`(日|JP)`http://www.gstatic.com/generate_204`300
# 表示创建一个叫 🇯🇵 日本延迟最低 的 url-test 策略组,并向其中添加名字含'日','JP'的节点每隔300秒测试一次
custom_proxy_group=🇯🇵 JP`select`沪日`日本`[]🇯🇵 日本延迟最低
# 表示创建一个叫 🇯🇵 JP 的 select 策略组,并向其中**依次**添加名字含'沪日','日本'的节点,以及引用上述所创建的 🇯🇵 日本延迟最低 策略组
  • ssr/v2 订阅默认没有组名, 可以使用这个方法来添加组名

    custom_proxy_group=g1`select`!!GROUPID=0
    # 指订阅链接中的第一条订阅
    custom_proxy_group=g2`select`!!GROUPID=1
    # 指订阅链接中的第二条订阅
    custom_proxy_group=v2ray`select`!!GROUP=V2RayProvider
    
  • 现在也可以使用双条件进行筛选

    custom_proxy_group=g1hk`select`!!GROUPID=0!!(HGC|HKBN|PCCW|HKT|hk|港)
    # 订阅链接中的第一条订阅内名字含 HGC、HKBN、PCCW、HKT、hk、港 的节点
    

[server] 部分

此部分通常保持默认即可

  1. listen

    绑定到 Web 服务器的地址,将地址设为 0.0.0.0,则局域网内设备均可使用。

  2. port

    绑定到 Web 服务器地址的端口,默认为 25500

[advanced] 部分

此部分通常保持默认即可

自动上传

自动上传 gist ,可以用于 Clash For Android / Surge 等进行远程订阅

在程序目录内的 gistconf.ini 中添加 Personal Access Token在此创建),在链接后加上 &upload=true 就会在更新好后自动上传 gist。 例如:

[common]
;uncomment the following line and enter your token to enable upload function
token = xxxxxxxxxxxxxxxxxxxxxxxx(所生成的 Personal Access Token)