将 subconverter / ACL4SSR 风格的 Clash 规则配置批量转换为 Shadowrocket(小火箭)可导入的
.conf, 支持多转换任务、GitHub Actions 每日自动更新,以及与 Clash 端保持一致的规则顺序和策略分组。
Shadowrocket 仅接受其自有 .conf 配置格式,无法直接使用 Clash / mihomo 的 YAML 规则。
本项目提供一条可维护的转换流水线:
- 以 subconverter 配置(
.ini) 为输入源(默认为 ACL4SSR 系列配置); - 解析其
ruleset=规则列表与custom_proxy_group=策略分组,按原顺序生成 Shadowrocket.conf; - 通过 GitHub Actions 在 每日定时、推送
main、手动触发时自动重建产物; - 产物只包含规则与策略分组,不包含任何节点;节点由 Shadowrocket 中的机场订阅独立管理。
本项目不提供、不托管任何代理服务或节点。
| 特性 | 说明 |
|---|---|
| 多转换任务 | configs/*.json 每个文件定义一个转换;新增转换只需加 JSON,无需修改代码 |
| 与上游同步 | 每日 03:17 UTC 自动重建;main 分支推送即触发;支持手动触发 |
| 规则一致性 | 保留上游规则顺序、分组名称与默认策略;策略校验失败时构建直接失败 |
| 零第三方依赖 | 单个 Python 3 标准库脚本,无 pip 依赖 |
| 产物零 Artifact | 不使用 upload-artifact,不占用 Actions 存储;仅提交 dist/ 产物 |
| 可定制 | 支持 prepend_rules / append_rules 为单个配置追加规则 |
| 可自托管 | 分钟级部署到任意 GitHub 账号,产物通过 raw 链接使用 |
基准数据:
ACL4SSR_Online_Full→ 29 个策略组、10,401 条规则,与 Clash Verge 端使用同一套规则。
flowchart LR
A["ACL4SSR 仓库<br/>配置 ini + 规则列表"] --> B["convert.py<br/>解析 / 转换 / 校验"]
C["configs/*.json<br/>转换任务定义"] --> B
B --> D["dist/*.conf<br/>Shadowrocket 配置"]
D -->|"update-url"| E["Shadowrocket<br/>配置自动更新"]
F["机场订阅"] -->|"独立更新"| E
| ID | 上游配置 | 策略组 | 规则数 | 产物大小 | 默认启用 |
|---|---|---|---|---|---|
acl4ssr-online-full |
ACL4SSR_Online_Full.ini |
29 | 10,401 | ≈471 KB | ✅ |
acl4ssr-online |
ACL4SSR_Online.ini |
11 | 3,526 | ≈163 KB | ✅ |
acl4ssr-mini-ai |
ACL4SSR_Online_Mini_Ai.ini |
6 | 3,440 | ≈158 KB | ✅ |
acl4ssr-full-adblockplus |
ACL4SSR_Online_Full_AdblockPlus.ini |
31 | 96,329 | ≈4.6 MB | ⛔ |
- 默认启用的三个配置覆盖了“完整分流 / 精简 / AI 精简”三类常见场景;
acl4ssr-full-adblockplus规则量与体积较大,默认关闭;需要时修改其configs/*.json中的"enabled": true即可启用。
本节由
convert.py自动生成(每次构建刷新),请勿手工修改。
| 配置 | 说明 | 大小 |
|---|---|---|
acl4ssr-mini-ai |
ACL4SSR Online Mini_Ai(精简 + Ai平台 组) | 158 KB |
acl4ssr-online-full |
ACL4SSR Online Full(与小猫同款) | 471 KB |
acl4ssr-online |
ACL4SSR Online(原版 11 组) | 163 KB |
ACL4SSR Online Mini_Ai(精简 + Ai平台 组)(acl4ssr-mini-ai)
https://raw.githubusercontent.com/Jedeiah/shadowrocket-convert/main/dist/acl4ssr-mini-ai.conf
ACL4SSR Online Full(与小猫同款)(acl4ssr-online-full)
https://raw.githubusercontent.com/Jedeiah/shadowrocket-convert/main/dist/acl4ssr-online-full.conf
ACL4SSR Online(原版 11 组)(acl4ssr-online)
https://raw.githubusercontent.com/Jedeiah/shadowrocket-convert/main/dist/acl4ssr-online.conf
将本仓库 Fork 到自己的账号,或把以下文件上传至一个新的 Public 仓库:
configs/
convert.py
.github/workflows/update.yml
必须为 Public 仓库:Shadowrocket 需要通过 raw 链接直接下载配置。
仓库 → Settings → Actions → General → Workflow permissions → 选择 Read and write permissions → Save。
仓库 → Actions → Update Shadowrocket configs → Run workflow。
执行完成后,产物位于 dist/,链接清单见 dist/links.md。
https://raw.githubusercontent.com/<用户名>/<仓库名>/main/dist/<配置 ID>.conf
- Shadowrocket → 配置 → 右上角
+→ 粘贴配置 raw 链接 → 下载; - 点击该配置,设为使用中;
- 长按配置 → 开启 自动更新(建议 24 小时);
- 返回首页 →
+→ 类型选择 Subscribe → 粘贴机场订阅链接; - 连通性测试后选择节点;
- 在配置详情 → 策略组 中逐组选择节点,例如将
💬 Ai平台指定为🇺🇸 美国节点或🇯🇵 日本节点。
策略组通过 policy-regex-filter 依据节点名称关键词自动匹配(如 香港 / HK、Japan / 日本、美国 / US)。
若某分组为空,请检查订阅节点命名是否包含对应关键词。
在 configs/ 新建 <id>.json 即可新增一个转换任务:
{
"id": "my-config",
"title": "我的配置",
"enabled": true,
"ini": "https://raw.githubusercontent.com/<owner>/<repo>/<branch>/<path>.ini",
"output": "dist/my-config.conf",
"prepend_rules": [],
"append_rules": []
}字段、约束与校验规则详见 configs/README.md。
提交并推送至 main 后,Actions 会自动生成 dist/my-config.conf 并更新 dist/links.md。
# 转换全部启用的任务
python3 convert.py
# 仅转换指定任务
python3 convert.py --only acl4ssr-online-full
# 生成带 update-url 的产物(用于自托管)
BASE_RAW_URL="https://raw.githubusercontent.com/<owner>/<repo>/main" python3 convert.py| 环境变量 | 说明 |
|---|---|
BASE_RAW_URL |
产物中 update-url 的基地址;设置后同时生成 dist/links.md |
| 触发方式 | 条件 | 说明 |
|---|---|---|
| 定时 | 每天 03:17 UTC(北京时间 11:17) | 全量重建 |
| 推送 | 推送到 main 分支 |
全量重建 |
| 手动 | Actions → Run workflow | 全量重建 |
- 工作流使用
GITHUB_TOKEN提交产物,不会再次触发push事件,无循环触发风险; - 工作流不生成 Actions artifact,仅提交
dist/中变化的内容; - 上游规则未变化时,提交步骤自动跳过(无空提交)。
| 项目 | 说明 |
|---|---|
PROCESS-NAME / SRC-IP-CIDR / DST-PORT / PROTOCOL |
iOS 不支持,转换时跳过(当前上游约 18 条) |
🚀 手动切换 分组 |
Clash 中为“手动选择全部节点”,Shadowrocket 中转为 url-test;手动选节点由 PROXY(首页选中节点)承担 |
🎥 奈飞节点、🎶 网易音乐 等 |
由 select + 正则转换为 url-test,按节点名关键词自动匹配 |
| DNS | 使用 Shadowrocket 默认 DNS 策略;如需 DoH,可在生成的 [General] 中追加 dns-server |
| 节点 | 不写入配置;由机场订阅独立更新,与规则更新互不影响 |
Q1:为什么不把节点写进配置文件?
机场订阅与规则属于两条独立更新链路。将节点写入配置会导致:
- 每次规则更新都要重新拉取节点,失败风险叠加;
- 机场更换节点后配置过期;
- 配置文件中出现订阅凭证,存在泄露风险。
因此本项目只生成规则与策略分组,节点由 Shadowrocket 的订阅功能管理。
Q2:策略组显示为空 / 节点匹配不到怎么办?
策略组通过节点名称关键词匹配。请确认订阅节点名称包含地区关键词(如 香港、HK、日本、JP、美国、US)。若机场命名不规范,可在订阅中重命名节点,或修改生成配置中的 policy-regex-filter。
Q3:私有仓库可以使用吗?
不可以直接使用。私有仓库的 raw 链接需要认证,Shadowrocket 无法携带 Token 下载。若需私有化,请自行搭建带鉴权的反向代理,或仅在本地生成后导入。
Q4:规则多久更新一次?
上游 ACL4SSR 仓库更新后,GitHub Actions 在每日定时或下一次推送时重建;Shadowrocket 按其“配置自动更新”间隔(建议 24 小时)拉取。两段延迟叠加后通常为 1 天以内。
Q5:可以转换非 ACL4SSR 的配置吗?
可以。只要输入为 subconverter 风格 .ini(包含 ruleset= 与 custom_proxy_group= 语法),即可在 configs/ 中新增任务进行转换。
- 仓库仅包含公开的 ACL4SSR 规则源地址与转换脚本,不包含任何节点、订阅链接、Token 或凭证;
- 工作流仅使用
actions/checkout与actions/setup-python,不接收外部输入; - 提交身份使用 GitHub noreply 邮箱,避免暴露个人信息;
- 若仓库改为私有,
raw链接将失效(见 FAQ Q3)。
- Fork 本仓库并创建特性分支;
- 新增转换任务时,请在
configs/中增加 JSON 文件,或修改convert.py的通用转换逻辑; - 提交前请本地执行
python3 convert.py,确保转换成功且产物可正常导入; - 通过 Pull Request 提交,并说明变更内容与验证结果。
- ACL4SSR —— 规则与策略分组源;
- subconverter ——
.ini配置语法约定; - Shadowrocket —— 目标客户端。
- 本项目仅进行规则格式转换,不提供任何代理服务、节点或网络接入能力;
- 所有规则的著作权归上游项目及原作者所有,本项目仅按其公开格式进行转换分发;
- 使用本项目产生的任何后果由使用者自行承担,请遵守所在国家或地区的法律法规;
- 若上游项目或相关方认为本项目存在不当之处,请提交 Issue,将及时处理。
本项目基于 MIT License 开源。