飘在云端

东西南北,海角天涯

· 前端 · · 2455次浏览

Subconverter 订阅转换API

前端版本: commits a81f2dd (2024-08-07 09:36 UTC+8)
原版后端版本: v0.9.0-1d56f44(commits 1d56f44 (2024-12-08 22:27 UTC+8)
魔改后端 MetaCubeX 版本:v0.8.2-f41986f built on 2024-10-28 at 02:14 UTC+8
基于 MetaCubeX 的 Clash Web 控制台:https://clash.0z.gs


更新:2024-12-12
更新了一下基于原版后端上游最新 commits v0.9.0-1d56f44 built on 2024-12-08 at 22:27 UTC+8
说明:Add TCP Fast Open option to Clash configs
更新内容详情:https://github.com/tindy2013/subconverter/commit/1d56f44696db920330e828e198f77fbded157418

另外依旧合并了一个 PR,修复 Vmess tcp + http 组合转换时丢失 network 参数的问题
本版没有修改最大 URL 请求长度限制,使用了默认行为的 8192 字符串长度限制,在线传入的节点数量过多会返回 http 状态码 414

自行编译打包了一份 Linux AMD64 平台的
https://www.alipan.com/s/bgq8iqqSwM1
提取码 up30


更新:2024-10-03
更新了一下基于上游 v0.9.0-79a7e888 版本的提交,在此基础上合并修复 vmess + tcp + http 转换异常问题,现在使用免流机场转换时能正确识别并转换 tcp + http 的 VMESS 链接
该版本为上游 https://github.com/tindy2013/subconverter/commit/79a7e888b11c343d18a064f08065e7962f1a1f49 + 合并部分 PR
截止到目前的最新 commits subconverter v0.9.0-79a7e88 built on 2024-09-30 at 06:39 UTC+8 backend

部分 PR:https://github.com/tindy2013/subconverter/issues/764#issuecomment-2211793253
修改 httplib.h 的 URL 最大请求长度限制为 819200,支持在线传入转换更多节点,避免返回 http 状态码 414

我自行编译了一份 Linux AMD64 平台的打包成了 exe 自解压格式放网盘,需要的自取
https://www.alipan.com/s/cUTtLhXXMqt
提取码 n5y4


更新:2024-04-17 更新了一下基于上游 v0.9.0-0c85747 版本的提交,在此基础上合并修复 vmess +tcp + http 转换异常问题,现在使用免流机场转换时能正确识别并转换 tcp + http 的 VMESS 链接
该版本为上游 https://github.com/tindy2013/subconverter/commit/0c8574755a8bce44dfb7ef8a2d9678a82273988c + 合并部分 PR,平台为 Linux AMD64

除此之外没有增加任何新功能,之前是考虑过要增加完善一些功能,比如支持 vless + hysteria + ss-2022 ciphers + Clash 的 ws-opts 添加了 Cookie 字段选项 + socks + Trojan xtls,把这些 PR 全部合并做成大杂烩(先画个大饼,以后再说) ......

更新:2023-06-19,本站后端已跟随上游更新至最新 commits 4205dee (UTC 2023-03-22 14:58),并在此基础上合并 pr ,修复 vmess + tcp + http 无法正确转换问题(常见于免流机场),经测试可以正常使用了

修复前:

 - {name: 🇨🇳 中国四川 100M 80 tcp_http 停机卡专用 MPTCP Standard, server: 1.1.1.1, port: 80, client-fingerprint: chrome, type: vmess, uuid: 12345678-1919-e5bb-fa70-e57927ff8b99, alterId: 0, cipher: auto, tls: false, tfo: false, skip-cert-verify: false, udp: true}

修复后:

  - {name: 🇨🇳 中国四川 100M 80 tcp_http 停机卡专用 MPTCP Standard, server: 1.1.1.1, port: 80, type: vmess, uuid: 12345678-1919-e5bb-fa70-e57927ff8b99, alterId: 0, cipher: auto, tls: false, skip-cert-verify: false, network: http, http-opts: {method: GET, path: ["/?ed=1024"], headers: {Host: [www.cloudflare.com]}}, udp: true}

接受远程配置规则投稿:https://t.me/subconapi

自行部署的编译步骤见文末,在 E5-26xx v2 @2.7Ghz 的母鸡上使用 2 vcpu 2G 内存 kvm VPS 小鸡上面测试,并配合 make -j$(nproc)加快编译速度,用时 8 分钟


远程配置规则:

  1. 默认的标准分流规则
    国外 + AI + Telegram + Steam(国际版) + 哔哩哔哩 + 国内 共 6 个分组,如需更多规则可到进阶模式查看规则列表,或者参见 第 5 条说明进行投稿,或者自己使用远程配置上传功能进行自定义
    AI 策略组包含: OpenAI 的 ChatGPT 、Anthropic 的 Claude、字节跳动的 Cici、微软的 Copilot、谷歌的 Gemini、Meta 的 Llama
  2. 国外分组的分流规则:局域网、保留地址直连,境外代理;
  3. 大陆 IPv4 的数据使用 ipip.net 在 GitHub 开源的 CIDR
  4. 修复了 Google Play 送中节点下载异常问题,下载时会使用谷歌位于中国大陆的服务器进行国内本地网络直连下载
  5. 如需投稿规则或反馈异常问题,可以加入 tg 群组:https://t.me/+BoggzaOLcOlmMDE1,TG 频道:https://t.me/subconapi

简单使用方法

  • 点击 API 前端 网址进入转换界面
  • 点击 基础模式
  • 订阅链接: 这里输入你的订阅连接
  • 客户端:选择你想转换的客户端
  • 点击网页底部的 生成订阅链接 ,点击 订阅复制 输入框右边的 复制 按钮,把转换后的订阅链接导入到你的客户端使用

更多高级用法见 Github 教程:https://github.com/tindy2013/subconverter/blob/master/README-cn.md


更新日志

  • 2022-7-31 跟随上游更新至 v0.7.2-e34add2 后端 [commits v0.7.2-e34add2],增加 ACL4SSR 默认在线版分组,增加 iOS Choc 客户端专用兼容的配置文件(使用进阶模式,远程配置选择 Choc),把王者荣耀的 DNS IP 182.256.116.117 加入到 IPIP.net 的 CIDR CN 列表,避免开着 Clash 打王者造成上百延迟(因为 DNS 被代理了),我这里写了一条 CIDR 182.254.116.0/24 到 境内 IP库, 此后更新日志发布在 Telegram 频道: https://t.me/subconapi,不再更新到文章内容, 。
  • 2022-6-3 修复 Steam 在使用后缀匹配规则 DOMAIN-SUFFIX,steampowered.com,直连情况下仍然会无法正常访问,Clash 日志显示红色字体 store.steampowered.com:443 dial tcp4 xxx.xxx.xxx.xxx : i/o timeout Steam (match DomainSuffix/store.steampowered.com),现已额外增加一个完全域名匹配规则修复该问题 DOMAIN,store.steampowered.com,经测试,在 SwitchyOmega 使用 系统代理(clash 开启系统代理)和 SwitchyOmega 监听 Clash 的 7890 socks5 协议端口下,能够在匹配到规则后正常直连,并且同时修复其他类似 Steam 的后缀匹配规则时报 timeout 问题,目前个人推测是匹配规则问题,后缀匹配应该不是 完全的通配符匹配,出现了一些预期外的问题。
  • 2022-4-30 修复 使用境外 IP 访问后端时返回 http 状态码 400 错误
  • 2022-4-14 跟随上游更新至 v0.7.2-a24cb7c 后端 [commits v0.7.2-a24cb7c]
  • 2022-4-5,跟随上游更新至 v0.7.2-ce8d2bd 后端 [commits v0.7.2-ce8d2bd]
  • 2022-4-3,跟随上游更新至 v0.7.2 后端 [commits 7703d55]
  • 2022-3-29 修复 回国分组 覆盖了其他分组的分流规则导致冲突的问题
  • 2022-3-27,已对订阅后端进行了速度优化,并做了简单的负载均衡,并增加境外 Cloudflare 接入
    使用境外 IP 更新订阅,走 Cloudflare CDN 网络,使用境内 IP 更新订阅,走国内网络

原订阅分组规则路径发生变更,需要重新到前端界面转换一次订阅即可。

  • 2022-3-26,因带宽被跑满导致订阅转换后端宕机 4 小时,计划迁移至 Cloudflare 继续提供服务
  • 2022-3-21,同步后端到上游最新 commits 406b0f2-2022-03-20 17:34
  • 2022-3-20,增加回国分组
  • 2022-3-19 已知当安卓系统 ≥ 9 版本,并开启了安卓自带的的加密 DNS 功能(DOT DNS),会导致 Clash For Android 无法劫持 DNS 数据包进行修改,网络会异常。
  • 2022-02-11 订阅转换后端跟随上游最新 commits 升级至 v0.7.1 backend-80cda7b ,
    增加 Steam (非中国特供版)分流规则分组,可自行决定是否代理 Steam,注意 Steam 中国特供版是默认直连,没放进steam分组里。
    增加 哔哩哔哩 港澳台分组,可自行决定是否代理。
    由于一些 BUG,我砍掉了前端对 PWA 的支持。
  • 2021-11-10 修复首次访问页面时,默认勾选的 启用UDP 参数不生效问题
  • 2021-9-14 修复 PC端 Clash CIDR 规则失效问题,增加更多保留地址

  • 即刻起,不再自行编译,直接去 GitHub action 下载最新版即可
  • subconverter GitHub 最新源码 Linux x64 平台编译步骤,使用 docker 搭建编译环境,没什么配置要求,推荐 1c1g +
    在 Ubuntu 20.04.4 LTS 编译成功,编译步骤:
  1. 自行安装好 docker、git 等命令,并最好在国外 VPS 编译,以解决 github 无速度问题或使用 github 镜像 加速 git clone
  2. mkdir -p ~/latestsubc/final && cd latestsubc/
  3. git clone --recursive https://github.com/tindy2013/subconverter.git && cd subconverter/
  4. SHA=$(git rev-parse --short HEAD) && sed -i 's/\(v[0-9]\.[0-9]\.[0-9]\)/\1-'"$SHA"'/' src/version.h
  5. docker run -v ~/latestsubc/subconverter:/root/workdir multiarch/alpine:amd64-latest-stable /bin/sh -c "apk add bash git nodejs npm && cd /root/workdir && chmod +x scripts/build.alpine.release.sh && bash scripts/build.alpine.release.sh"

    此时编译完成,我这里用时大概 3 分钟(4 vcpu @2.6 Ghz KVM vps),还是很快的,接下来从容器中提取编译好的文件并打包成压缩文件即可。

  • 提示:
    如果你在国内服务器编译,先给宿主机配置一个代理,然后设置代理的环境变量,使其在当前终端生效,并在本地提供一个监听端口,用于对外提供 http 代理服务,如使用 clash meta CLI 核心,配置混合端口(mixed-port) 7890,并指定容器的网络为 host 模式,简单粗暴一把梭,就能直接访问宿主机的本地代理端口了,最终命令改为

    docker run --network host --dns=119.29.29.29 -e http_proxy=http://127.0.0.1:7890 -e https_proxy=http://127.0.0.1:7890 -v ~/latestsubc/subconverter:/root/workdir multiarch/alpine:amd64-latest-stable /bin/sh -c "export http_proxy='http://127.0.0.1:7890' && apk add bash git nodejs npm && cd /root/workdir && chmod +x scripts/build.alpine.release.sh && bash scripts/build.alpine.release.sh"

也可以在构建脚本阶段配置代理,修改 subconverter/scripts/build.alpine.release.sh 文件,在开头 set -xe 之后内容追加如下配置

# 设置代理环境变量
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export ftp_proxy=http://127.0.0.1:7890
export no_proxy=localhost,127.0.0.1

此时容器的镜像构建、安装都会使用代理

  1. 获取最后一个退出的容器 ID,并复制编译后的文件到宿主机,docker cp $(docker ps -a -q -l):/root/workdir/subconverter ~/latestsubc/final
  2. cd ~/latestsubc/final && tar cvJf ~/latestsubc/final/subconverter.tar.xz subconverter
  3. 此时当前目录下的 subconverter.tar.xz 即为编译好的成品,解压命令为 tar xvJf subconverter.tar.xz
鸣谢,相关项目地址:

https://github.com/tindy2013/subconverter
https://github.com/CareyWang/sub-web
https://github.com/17mon/china_ip_list
https://github.com/MetaCubeX/Clash.Meta

评论 (0条)