Adapt decryption to socks, enabling parsing of non-plaintext socks.
### 功能描述/Feature description
落地 SOCKS5 本质上依然是标准的 SOCKS5 协议,但在“让代理软件读取节点参数”这一步,出现了配置解密与解析的兼容性断层:
1. 为什么“加密落地 SOCKS”会导致部分软件全灭?
标准的 SOCKS5 链接通常是明文或标准 Base64 编码(如 socks5://user:pass@ip:port)。
为了防止落地 IP 暴露、防止账号密码被爬取或盗用,这个项目对节点链接的字符串进行了自定义加密/混淆(例如用 AES 算法或自定义逻辑把 IP、端口、账号密码打包成一串密文)支持的软件(小火箭、v2rayN、Clash Verge 等):这些软件的订阅解析器(URI Parser)非常丰富且高度定制化。它们要么内置了对该项目加密算法的解密逻辑,要么支持该项目特定的 URI 格式,能够在下载订阅的瞬间把密文解密还原成标准的 IP、端口和账号密码,再喂给底层内核。不支持的软件(Loon、Karing 等):Loon 的订阅解析器非常原生且严格,只认标准格式(如标准 YAML、标准 Base64 的 socks5:// 或 Loon 专属的节点语法)。面对未知的加密字符串,Loon 无法识别,直接丢弃或解析失败。Karing 在读取这种非标准密文链接时,解析逻辑提取不出正确的 IP 和 Auth 信息,最终给底层 sing-box 内核传递的是空 IP、错误端口或空密码,内核拿到这种无效配置去发包,自然表现为“节点全部不通/握手失败”。
2. 核心矛盾总结
明文/标准落地SOCKS
socks5://
user:pass@ip:port
项目的“加密落地SOCKS”
自定义的加密字符串或非标准URI
小火箭/v2rayN
正常解析
内部自带解密/兼容逻辑,成功还原IP和密码
Loon / Karing
缺乏对应的解密模块,解析出的节点参数全空,导致不通
依赖客户端作者添加这种非标解密逻辑,成功率极低且周期极长(尤其是 Loon 的开发者对添加非标准、非公认协议的私有混淆语法持非常保守的态度;Karing 倒是可能在 GitHub Issue 中接纳)。
在“绝不暴露明文用户名密码和 IP”的前提下,完全可以通过以下 3 种替代方案 自行解决:
方案一:搭建私有/本地订阅转换器(最推荐)
如果你不想让明文节点在网络上传播或暴露在公共平台,可以自建私有 Subconverter(订阅转换):
1. 部署私有服务:在自己的 VPS 或本地 Docker/NAS 中运行一个独立的 Subconverter 镜像。
2. 处理解密:在你的私有转换器里添加该项目的解密脚本/规则。
3. 输出专属配置:
在 Loon / Karing 中填入你私有转换器生成的 HTTP(S) 订阅地址。
转换器会在内存中把密文节点实时解密,并直接输出为 Loon 能够完美识别的标准语法(或 Karing 识别的 JSON)。
4. 隐私安全:全程没有任何第三方服务器能接触到你的明文 IP 和密码,且配置文件只存在于你的私有链条中。
方案二:用“协议级套娃/隧道”替代“字符串加密”(标准架构做法)
项目方采用“自定义加密 SOCKS 字符串”是一种在 URI 语法层面 的变通做法,这导致了生态不兼容。真正的网络架构通常采用标准协议封装:
套一层标准加密隧道:在服务端把落地 SOCKS5 挂载在 VLESS、Shadowsocks 或 Hysteria2 之后,或者利用 sing-box / Xray 的 Outbound 链式代理(Relay)。
效果:
对外分发的节点链接完全符合开源社区的标准规范(如 vless://)。
所有软件(包括 Loon、Karing)原生无缝支持。
传输全程高强度 TLS 加密,依然没有任何人能从外部或抓包中看到底层的 SOCKS5 账号和 IP。
方案三:本地 sing-box / Xray 前端中转(轻量桥接)
如果你有局域网设备(如软路由、Mac/PC 或 NAS):
1. 在局域网设备上运行一个轻量级的 sing-box 内核(因为 sing-box 支持该项目的解密逻辑或高级配置)。
2. 由这个 sing-box 负责解密并连接落地 SOCKS 节点,然后在本地暴露一个局域网端口(例如 192.168.1.X:1080)。
3. Loon 或 Karing 在手机端只需添加这个局域网内部节点,从而完美避开明文外网 IP 和密码在软件前端的暴露。
### 使用场景/Use case
The proxy nodes set up through Cloudflare don't allow you to fix the outbound IP address. You can add a socks server as the destination IP, but currently clients can only resolve and recognize plaintext socks format destination IPs. If encryption is used instead of plaintext, it won't be able to resolve properly, and the nodes won't work and won't be usable.
### 适用系统/Target OS
- [ ] iOS
- [ ] macOS
- [ ] Apple tvOS
- [x] Android
- [x] Windows
- [ ] Linux
0 条评论