惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
Cloudbric
Cloudbric
C
CERT Recently Published Vulnerability Notes
G
GRAHAM CLULEY
V
Vulnerabilities – Threatpost
C
Cisco Blogs
T
Tenable Blog
P
Privacy International News Feed
T
The Exploit Database - CXSecurity.com
I
Intezer
AWS News Blog
AWS News Blog
IT之家
IT之家
博客园 - 司徒正美
C
Cybersecurity and Infrastructure Security Agency CISA
博客园 - 【当耐特】
The Hacker News
The Hacker News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Spread Privacy
Spread Privacy
S
SegmentFault 最新的问题
博客园 - Franky
人人都是产品经理
人人都是产品经理
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
V
Visual Studio Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
H
Hacker News: Front Page
Latest news
Latest news
Scott Helme
Scott Helme
腾讯CDC
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
A
Arctic Wolf
S
Securelist
雷峰网
雷峰网
The GitHub Blog
The GitHub Blog
Project Zero
Project Zero
Google DeepMind News
Google DeepMind News
P
Palo Alto Networks Blog
F
Fortinet All Blogs
Schneier on Security
Schneier on Security
云风的 BLOG
云风的 BLOG
Security Archives - TechRepublic
Security Archives - TechRepublic
The Last Watchdog
The Last Watchdog
WordPress大学
WordPress大学
MongoDB | Blog
MongoDB | Blog
L
LINUX DO - 最新话题
S
Schneier on Security
NISL@THU
NISL@THU
Jina AI
Jina AI
M
MIT News - Artificial intelligence

BlogFinder

日常漫步 Vol.24 之漫步前山河 - 雅余 周报 #1-聊聊本周的收获 - Edwin's Blog 我的OpenCode必装插件与Skill Write Something 掌中之物未必在掌握之中 · CRIVU PiliNara,一个更顺手的 PiliPlus 分支 「NekoEcho」:做一个必有回响的猫娘主题博客 2026-05 书影音总结 简化博客主题 - 安迪 我第一次发布 npm 包 拾花小记#45:中考前的二三事 – 小改学习志 黛西花园5月游 #18 枇杷又熟了的五月月报 一些奇奇怪怪的需求?word仿方正书版的几个小操作 - Xiobb's Blog 0419 御温泉之旅 修复了一些bug,网站基本上趋于稳定了 - 新锐博客 又回到四十年前 如何定义成功 迷鹿屋2026已重新上线 科技冰火两重天+一周回顾 ${title} 热度退了,我反而用得更深了-咕咚同学 我到底该不该换个域名? 随身WIFI折腾记 - 安迪 博客撰写体验提升——hexo pro插件 为什么不用相机把屏幕上的接关密码拍下来? 国清寺与天台山 – Ouroboros ★★★★☆《挽救计划》——久违的经济上行感 - Davidの3号基地 删除右键“打开方式”里多余选项 第三周刊_No.53|一切都会被支付两次 安卓APP通话记录与录音上传踩坑记录 - 子舒的博客 天量下跌 inBox 笔记 2.3.8,把工具栏交给了你-咕咚同学 我把小龙虾搬到了微信-咕咚同学 安好 - 响石潭 Compound Engineering Plugin:让每个工程单元都比上一个更容易 MOSS-TTS Family:开源高质量语音与声音生成模型家族深度解析 Crawl4AI:专为 LLM 设计的开源 Web 爬虫与数据抓取工具 Build Your Own X:从零实现你最喜欢的技术——程序员进阶的终极资源清单 Anthropic Skills:用文件夹教 Claude 专业技能的开源框架 1年的去月球(下) - 梅之夏 欢迎回来。 简单讲讲 ASN.1 与 OID DTV - 直播聚合客户端 5.22-5.27 – 不兴江 还没去过鸭川 – 不兴江 张晶晶同学三刷林志颖 关于我 – 不兴江 爱与嫉妒 – 不兴江 港股被持续做空 备案码花了四百块-咕咚同学 一句话生成封面:我给公众号做了4种风格的AI封面生成技能 「官」方認證 再谈费曼学习法 2026-05-28T00:34:11+08:00 2026-05-28T00:28:45+08:00 离谱的英语学习指南:基于AI的英语进阶系统方法论 iii:零集成架构的后端统一运行时 Claude Code Harness:让 Claude Code 工作有迹可循的工程化框架 Heretic:全自动移除大语言模型审查机制的开源工具 MarkItDown:微软开源的万能文档转 Markdown 利器 Harness:让 Claude Code 秒变多智能体协作工厂 这段时间尽折腾AI Agent了,确实极大地提高了效率 近期动态:两个新站点正式上线啦 误判解除!zhouayuan.com 腾讯安全申诉成功 - 周阿源|玩具设计・插画日常・生活随笔 Ralph:让 AI 编码工具自主循环跑完所有 PRD 任务的量产神器 全都违法 – 个人工作记录 关于zhouayuan.com被误判 “含违规信息” 的说明与申诉记录 - 周阿源|玩具设计・插画日常・生活随笔 小米 MiMo v2.5 Pro 白嫖 最大的人间清醒,兜里有钱,但是不花。 夜晚靓歌(12):于文文现场solo - 王志勇的Blog 今日插画:风扬起的倔强 - 周阿源|玩具设计・插画日常・生活随笔 回门习俗 独立网卡 - 忘记了回忆 500亿入股人工智能企业 从命令行到桌面智能体-咕咚同学 第一性原理读书笔记 行者微评论223-加班の守株待兔-博客|政治与时事-风雨行者 ZOZO开源物理接触求解器:GPU加速的可扩展仿真引擎 OpenStock:开源股票市场交易平台技术深度解析 MoneyPrinterTurbo:基于AI的全自动短视频生成工具深度解析 Claude-Mem:为 Claude Code 构建的持久化记忆压缩系统 Twenty:可代码化定制的企业级开源 CRM 平台技术深度解析 2026-05-26T22:59:17+08:00 企业级开源大模型部署平台 GPUStack 实战教程 1年的去月球(上) - 梅之夏 Sevalla - 静态网站托管服务 不用翻墙、不用注册、不用月费,普通人也能用上 Claude Code 装修灯具要注意⚠️ 黄梅天先锋 - 游子微博 公安备案顺利办结,站点备案全部完成 - 周阿源|玩具设计・插画日常・生活随笔 第三次兑换天猫超市卡了宗宗酱-三维狐少儿编程 Don't think, feel. - Rolen's Blog 人这一辈子,到底图个什么 博客迁移 - Edwin's Blog 情感赛道写作模板 再现本轮行情的典型特征 裁员与平常心-咕咚同学 别让“偷懒”,成为隐私泄露的破绽 片刻 - Jdeal | Life is like a Design.
Subconverter 太臃肿?PHP 版轻量化替代来了! - 辰渊尘站
辰渊尘 · 2026-06-17 · via BlogFinder
TIP

项目地址:

Waiting for api.github.com...

演示地址:https://sublite.mcxiaochen.top

前言#

订阅转换是个多代理用户的刚需——把多个代理的订阅合并成一个,生成一份统一的配置文件,导入到 Clash/mihomo 里使用。

说到订阅转换,大家首先想到的肯定是 tindy2013/subconverter,16.8k+ stars,功能非常全面,支持 Clash、Surge、Quantumult、Loon 等十几种客户端格式。

但问题是:我用不上这么多功能。

我只用 Clash/mihomo,不需要 Surge、不需要 Quantumult、不需要 Loon。我只需要把几个订阅合并成一份 mihomo 配置,仅此而已。原版的配置项和参数众多,对于这种简单需求来说,学习成本偏高。

所以我就写了这个 subconverter-lite——一个基于 PHP 的轻量化订阅转换工具,只做一件事,做好一件事。

项目介绍#

功能特点#

  • 轻量化设计:整个项目只有几个 PHP 文件,无需编译,直接部署
  • 简洁美观的前端:深色主题,JetBrains Mono 字体,交互直观
  • 支持多订阅合并:最多支持 10 个订阅链接合并
  • 支持多种代理协议:SS、SSR、VMess、VLESS、Trojan、Hysteria 等
  • 基于 mihomo 配置模板:开箱即用,可自定义

技术栈#

  • 后端:PHP >= 7.4 + curl 扩展
  • 前端:原生 HTML/CSS/JS,零框架依赖

与原版对比#

特性subconverter (原版)subconverter-lite
语言C++PHP
客户端支持15+ 种Clash/mihomo
部署方式编译 / Docker直接部署
配置复杂度
适用场景全客户端覆盖仅需 Clash/mihomo

如果你只用 Clash/mihomo,subconverter-lite 完全够用,而且更简单。

ScreenShot_2026-06-16_232723_053_ompress.webp

技术实现#

项目架构#

整体架构非常简单,一个请求流程如下:

flowchart TD A[用户请求] --> B{请求类型} B -->|前端页面| C[index.html] B -->|API 调用| D[api.php] D --> E[解析参数] E --> F[Subscription.php] F --> G[验证链接] G --> H[Converter.php] H --> I[加载模板] I --> J[替换 proxy-providers] J --> K[返回 YAML 配置]

项目结构:

subconverter-lite/

├── index.php # 入口文件(重定向到前端)

├── index.html # 前端页面

├── api.php # API 入口

├── config.php # 配置文件

├── src/

│ ├── Subscription.php # 订阅解析类

│ └── Converter.php # 转换器类

└── templates/

└── base.yaml # 基础模板

订阅解析(Subscription.php)#

Subscription 类负责订阅链接的验证和名称提取:

class Subscription

{

private int $timeout;

private string $userAgent;

public function __construct(int $timeout = 10, string $userAgent = '')

{

$this->timeout = $timeout;

$this->userAgent = $userAgent ?: 'clash-verge/v2.0.0';

}

// 验证订阅链接是否可访问

public function validate(string $url): bool

{

$ch = curl_init();

curl_setopt_array($ch, [

CURLOPT_URL => $url,

CURLOPT_RETURNTRANSFER => true,

CURLOPT_TIMEOUT => $this->timeout,

CURLOPT_FOLLOWLOCATION => true,

CURLOPT_NOBODY => true,

]);

curl_exec($ch);

$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

return $httpCode === 200;

}

// 使用 crc32 生成唯一标识

public function extractName(string $url, int $index): string

{

$hash = sprintf('%x', crc32($url));

return "sub_{$hash}";

}

}

核心逻辑很简单:验证链接是否可访问,然后用 crc32 生成一个唯一名称作为 proxy-provider 的标识。

转换器(Converter.php)#

Converter 类负责加载模板并替换 proxy-providers:

class Converter

{

private string $templatePath;

public function __construct(string $templatePath)

{

$this->templatePath = $templatePath;

}

public function convert(array $subscriptions): string

{

// 加载模板

$template = file_get_contents($this->templatePath);

// 构建 proxy-providers 配置

$providers = [];

foreach ($subscriptions as $sub) {

$providers[] = sprintf(

' %s:\n type: http\n url: "%s"\n interval: 3600\n path: ./%s.yaml',

$sub['name'],

$sub['url'],

$sub['name']

);

}

// 替换模板中的 proxy-providers 占位符

$providerConfig = implode("\n", $providers);

$template = preg_replace(

'/proxy-providers:.*?(?=\n[a-zA-Z])/s',

"proxy-providers:\n" . $providerConfig . "\n",

$template

);

return $template;

}

}

核心逻辑:读取模板文件,把用户传入的订阅链接填充到 proxy-providers 配置中,返回最终的 YAML 配置。

API 设计#

API 入口 api.php 的参数设计非常直观:

单个订阅:

/api.php?sub_url=https://example.com/subscribe

多个订阅:

/api.php?sub_url_1=https://example.com/sub1&sub_url_2=https://example.com/sub2

自定义名称:

/api.php?sub_url_1=https://example.com/sub1&name_1=我的代理

最多支持 10 个订阅链接(sub_url_1sub_url_10),同时兼容单个 sub_url 参数。

前端实现#

前端采用深色主题设计,使用 JetBrains Mono 字体,整体风格简洁:

  • 输入框支持 URL 验证
  • 可添加多个订阅链接
  • 一键生成配置链接
  • 支持复制链接、下载配置、在 Clash 中打开

ScreenShot_2026-06-16_232755_921_ompress.webp

部署教程#

环境要求#

  • PHP >= 7.4
  • PHP curl 扩展

安装步骤#

1. 克隆项目

git clone https://github.com/mcxiaochenn/subconverter-lite.git

cd subconverter-lite

2. 安装 PHP curl 扩展

# Ubuntu/Debian

sudo apt-get install php-curl

# CentOS/RHEL

sudo yum install php-curl

3. 配置 Web 服务器

使用 Nginx 的话,配置一个简单的站点:

server {

listen 80;

server_name your-domain.com;

root /path/to/subconverter-lite;

index index.html index.php;

location / {

try_files $uri $uri/ /index.php;

}

location ~ \.php$ {

fastcgi_pass unix:/var/run/php/php-fpm.sock;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

}

或者使用 PHP 内置服务器快速测试:

配置说明#

编辑 config.php 可以修改以下配置:

return [

// 模板文件路径

'template_path' => __DIR__ . '/templates/base.yaml',

// 请求超时时间(秒)

'request_timeout' => 10,

// 用户代理

'user_agent' => 'clash-verge/v2.0.0',

];

模板文件 templates/base.yaml 基于 mihomo 配置格式,可以根据需要自定义。

使用方法#

方式一:前端页面(推荐)#

访问你的域名,会显示一个简洁的前端页面。输入订阅链接,点击”添加”,然后点击”生成配置”,即可获取订阅地址。

方式二:API 直接调用#

# 单个订阅

curl "https://your-domain.com/api.php?sub_url=https://example.com/subscribe"

# 多个订阅合并

curl "https://your-domain.com/api.php?sub_url_1=https://example.com/sub1&sub_url_2=https://example.com/sub2"

# 自定义代理名称

curl "https://your-domain.com/api.php?sub_url_1=https://example.com/sub1&name_1=我的代理"

生成的配置链接可以直接导入到 Clash/mihomo 中使用。

总结#

subconverter-lite 的定位很简单:只做订阅合并和配置生成,做好这一件事。

如果你和我一样,只用 Clash/mihomo,不需要支持十几种客户端格式,那么 subconverter-lite 可能更适合你。轻量化、易部署、够用就好。

最后再贴一下项目地址,欢迎 Star 和 PR:

Waiting for api.github.com...

演示地址:https://sublite.mcxiaochen.top