Sub-Store Documentation

Advanced Subscription Manager for QX, Loon, Surge, Stash, Egern and Shadowrocket!

10,243 stars JavaScript JavaScript 1 file · ~2,849 tokens #clash#http#loon#quantumultx#shadowrocket#shadowsocks#shadowsocksr#ssr
RAW Doc

File: README.md

Sub-Store

Advanced Subscription Manager for QX, Loon, Surge, Stash, Egern and Shadowrocket


MaruCode 是一家偶尔做做慈善的小破站 API,自营号池,不搞充值营销套路,主要提供 Codex、Claude Code、GPT Image-2 等主流模型,支持 WebSocket 协议,明码标价(Codex 0.25x, CC 1.5x),透明汇率(1:1),新用户注册 送 2 刀 💰 生图工作台 🖼

📚 文档/DOC

sub.store Domain Safety Notice

Statement

⚠️ sub.store is only the domain used by module-script rewrite MitM rules. It is not a public domain owned by us.

Risk

If a request does not go through the rewrite, the data will be sent to the public sub.store service.

You can map sub.store to 127.0.0.1 or another local address to prevent accidental access to the public sub.store. However, ordinary users may still send requests to the public sub.store after switching or toggling configuration modules.

  1. It could, in theory, redirect users to a fake frontend. This is only a possibility and does not imply that the owner of sub.store would do this. Note: The official frontend is https://sub-store.vercel.app.
  2. It could receive user data from sub.store.

This creates a data leakage risk.

Plan

After listening to suggestions from the group, we will not switch to a new domain for now. Choosing a new domain is also awkward: it needs to be related, short, and unlikely to be registered by someone else, at least in the short term.

This notice is published only as an announcement. No changes will be made for now.

Example:

text
[Host]
sub.store = 127.0.0.1

CORS Allowlist

Sub-Store also supports a configurable browser CORS allowlist for the backend API. This does not change the module rewrite domain, but it limits which browser origins can read API responses through CORS.

  • Node/server deployments use SUB_STORE_CORS_ALLOWED_ORIGINS; the default is * for compatibility.
  • Proxy App modules use the cors module argument; the default is https://sub-store.vercel.app,http://substore.stash,https://substore.stash.
  • Multiple origins can be separated by commas. Origins are matched exactly by scheme, host, and port. Set the value to * only when you accept the risk of any website reading the local backend through browser CORS.

Core functionalities:

  1. Conversion among various formats.
  2. Subscription formatting.
  3. Collect multiple subscriptions in one URL.
  4. Host and modify subscriptions/files

The following descriptions of features may not be updated in real-time. Please refer to the actual available features for accurate information.

1. Subscription Conversion

Supported Input Formats

本地节点怎么写/How To Write A Local Node

⚠️ Do not use Shadowrocket or NekoBox to export URI and then import it as input. The URIs exported in this way may not be standard URIs. However, we have already supported some very common non-standard URIs (such as VMess, VLESS).

  • Proxy URI Scheme(socks5, socks5+tls, http, https(it's ok))

    example: socks5+tls://user:pass@ip:port#name

  • URI(AnyTLS, SOCKS, SS, SSR, VMess, VLESS, Trojan, Hysteria, Hysteria 2, TUIC v5, WireGuard)

    Please note, HTTP(s) does not have a standard URI format, so it is not supported. Please use other formats.

  • Clash Proxies YAML

  • Clash Proxy JSON/JSON5/YAML(single line)

    NaiveProxy

  • QX (SS, SSR, VMess, Trojan, HTTP, SOCKS5, VLESS, AnyTLS)

  • Loon (SS, SSR, VMess, Trojan, HTTP, SOCKS5, SOCKS5-TLS, WireGuard, VLESS, Hysteria 2, AnyTLS)

  • Surge (Direct, SS, VMess, Trojan, HTTP, HTTPS, HTTP/2 CONNECT, SOCKS5, SOCKS5-TLS, AnyTLS, TrustTunnel, TUIC, Snell, Hysteria 2, SSH(Password authentication only), External Proxy Program(only for macOS), WireGuard(Surge to Surge))

  • mihomo(Clash.Meta) Compatible (Direct, SS, SSR, VMess, Trojan, HTTP, SOCKS5, Snell, VLESS, WireGuard, Hysteria, Hysteria 2, TUIC, SSH, mieru, sudoku, AnyTLS, MASQUE, Tailscale, GOST Relay, Shadow QUIC, ZeroTier)

Deprecated(The frontend doesn't show it, but the backend still supports it, with the query parameter target=Clash):

  • Clash (SS, SSR, VMess, Trojan, HTTP, SOCKS5, Snell, VLESS, WireGuard)

Supported Target Platforms

  • Plain JSON
  • Stash
  • Clash.Meta(mihomo)
  • Surfboard
  • Surge
  • SurgeMac(Use mihomo to support protocols that are not supported by Surge itself)
  • Loon
  • Egern
  • Shadowrocket
  • QX
  • sing-box
  • V2Ray
  • V2Ray URI

Deprecated:

  • Clash

2. Subscription Formatting

Filtering

  • Regex filter
  • Discard regex filter
  • Region filter
  • Type filter
  • Useless proxies filter
  • Script filter

Proxy Operations

  • Set property operator: set some proxy properties such as udp,tfo, skip-cert-verify etc.
  • Flag operator: add flags or remove flags for proxies.
  • Sort operator: sort proxies by name.
  • Regex sort operator: sort proxies by keywords (fallback to normal sort).
  • Regex rename operator: replace by regex in proxy names.
  • Regex delete operator: delete by regex in proxy names.
  • Script operator: modify proxy by script.
  • Resolve Domain Operator: resolve the domain of nodes to an IP address.

Development

Install pnpm

Go to backend directories, install node dependencies:

text
pnpm i
text
SUB_STORE_BACKEND_API_PORT=3000 pnpm esbuild:dev

or this one if you're using Termux

text
SUB_STORE_BACKEND_API_PORT=3000 pnpm run --parallel "/^dev:.*/"

Build

text
pnpm bundle:esbuild

LICENSE

This project is under the GPL V3 LICENSE.

Star History

Acknowledgements

  • Special thanks to @KOP-XIAO for his awesome resource-parser. Please give a star for his great work!
  • Special thanks to @Orz-3 and @58xinian for their awesome icons.

Sponsors

NodeSupport sponsored this project.

致谢

感谢赞助商 ForZTN 对项目服务器的支持,感谢。


File: config/README.md

Sub-Store 配置指南

查看更新说明:

Sub-Store Releases: https://github.com/sub-store-org/Sub-Store/releases

Telegram 频道: https://telegram.me/cool_scripts

服务器/云平台/Docker/Android 版

https://xream.notion.site/Sub-Store-abe6a96944724dc6a36833d5c9ab7c87

App 版

CORS 允许来源

Sub-Store 后端会根据请求的 Origin 判断浏览器跨域访问是否允许。允许值是 origin, 需要包含协议、域名和端口, 不包含路径。例如 https://sub-store.vercel.app 或 http://127.0.0.1:8888。

Node/服务器/Docker/Android 版可以通过环境变量 SUB_STORE_CORS_ALLOWED_ORIGINS 设置, 默认值为 *, 以保持旧行为。多个 origin 用 , 分隔, 例如:

bash
SUB_STORE_CORS_ALLOWED_ORIGINS=https://sub-store.vercel.app,http://127.0.0.1:8888

支持参数配置的 App 模块使用 cors 参数设置, 默认值为 https://sub-store.vercel.app,http://substore.stash,https://substore.stash。如果需要使用本地前端 http://127.0.0.1:8888?api=http://127.0.0.1:3001/123 测试代理 App 后端, 需要把模块里的 cors 改成 https://sub-store.vercel.app,http://substore.stash,https://substore.stash,http://127.0.0.1:8888。设为 * 可恢复旧的任意来源访问行为, 但任意网站都可能通过浏览器 CORS 读取本机 Sub-Store 后端响应, 不建议长期使用。

1. Loon

安装使用 插件 https://raw.githubusercontent.com/sub-store-org/Sub-Store/master/config/Loon.plugin 即可。

新版 Loon 3.5.0(969)及以上版本 使用资源解析器插件 https://raw.githubusercontent.com/sub-store-org/Sub-Store/master/config/Loon-parser.plugin
旧版 Loon 在资源解析器中使用 https://github.com/sub-store-org/Sub-Store/releases/latest/download/sub-store-parser.loon.min.js

详见 Loon 资源解析器说明

2. Surge

关于 Surge 的格外说明

Surge Mac 版如何支持 SSR, 如何去除 HTTP 传输层以支持 类似 VMess HTTP 节点等 请查看 链接参数说明

定时处理订阅 功能, 避免 App 内拉取超时, 请查看 定时处理订阅

  1. 最新 Surge iOS TestFlight 版本 可使用 Beta 版(支持最新 Surge iOS TestFlight 版本的特性): https://raw.githubusercontent.com/sub-store-org/Sub-Store/master/config/Surge-Beta.sgmodule

  2. 官方默认版模块(支持 App 内使用编辑参数): https://raw.githubusercontent.com/sub-store-org/Sub-Store/master/config/Surge.sgmodule

最新版 Surge 已删除 ability: http-client-policy 参数, 模块暂不做修改, 对测落地功能无影响

  1. 经典版, 不支持编辑参数, 固定带 ability 参数版本, 使用 jsc 引擎时, 可能会爆内存, 如果需要使用指定节点功能 例如[加旗帜脚本或者 cname 脚本] 请使用此带 ability 参数版本: https://raw.githubusercontent.com/sub-store-org/Sub-Store/master/config/Surge-ability.sgmodule

  2. 经典版, 不支持编辑参数, 固定不带 ability 参数版本: https://raw.githubusercontent.com/sub-store-org/Sub-Store/master/config/Surge-Noability.sgmodule

3. QX

订阅 重写 https://raw.githubusercontent.com/sub-store-org/Sub-Store/master/config/QX.snippet 即可。

定时任务: https://raw.githubusercontent.com/sub-store-org/Sub-Store/master/config/QX-Task.json

4. Stash

安装使用 覆写 https://raw.githubusercontent.com/sub-store-org/Sub-Store/master/config/Stash.stoverride 即可。

5. Shadowrocket

安装使用 模块 https://raw.githubusercontent.com/sub-store-org/Sub-Store/master/config/Surge-Noability.sgmodule 即可。

6. Egern

安装使用 模块 https://raw.githubusercontent.com/sub-store-org/Sub-Store/master/config/Egern.yaml 即可。

使用 Sub-Store

  1. 使用 Safari 打开这个 https://sub.store 如网页正常打开并且未弹出任何错误提示,说明 Sub-Store 已经配置成功。
  2. 可以把 Sub-Store 添加到主屏幕,即可获得类似于 APP 的使用体验。
  3. 更详细的使用指南请参考文档。

链接参数说明

https://github.com/sub-store-org/Sub-Store/wiki/%E9%93%BE%E6%8E%A5%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E

脚本使用说明

https://github.com/sub-store-org/Sub-Store/wiki/%E8%84%9A%E6%9C%AC%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E