外观
免费科学上网软件有哪些?开源客户端与免费服务器不是一回事
直接结论:Mihomo、Xray-core、sing-box 是内核,Clash Verge Rev、v2rayN、v2rayNG、FlClash、Hiddify 是套在内核外面的客户端。它们都能从官方仓库免费下载,下载完仍然需要一个由别人出钱维护的节点才能上网。选型顺序是来源可核验、权限说得清、协议对得上,价格放在最后。
核验日期阅读23 分钟编辑免梯指数编辑部方法说明,不构成对任何具体服务的可用性承诺。
先把五类对象拆开
先看一个常见场景。有人在搜索框里输入“免费科学上网软件”,点开前排结果,下载安装包,装完发现没有节点,于是回头搜“免费节点”。他缺的东西在服务里。中文里的“免费软件”压进了两层意思,一层是代码可以自由下载,另一层是流量有人替你付钱。
把链路拆成五类对象,边界就清楚了。
| 层 | 具体对象 | 维护方 | 能否零成本复制 | 出问题时先看什么 |
|---|---|---|---|---|
| 内核与客户端 | Mihomo、Xray-core、sing-box 及各种图形界面 | 开源项目维护者 | 能,源码与发布包可下载 | 版本、日志、本地端口 |
| 协议规范 | Shadowsocks、VMess、VLESS、Trojan、Hysteria2、TUIC、WireGuard | 协议作者与实现者 | 能,规范公开 | 两端参数与传输组合 |
| 节点与出口 | 入口服务器、出口 IP、带宽 | 服务方或自建者 | 不能,按流量与峰值计费 | 订阅是否有效、出口是否可达 |
| 订阅与运营 | 节点清单、计费、客服、条款 | 服务方 | 不能,需要人和时间 | 更新日期、条款、额度 |
| 设备与系统 | 操作系统、权限、虚拟网卡 | 平台厂商 | 随设备获得 | 授权记录、路由表 |
软件层的复制成本接近零。一份内核二进制可以装进无数台设备,项目方不需要为每个用户增加服务器。服务层不同,每多一个活跃用户,就多一份带宽、连接数和 IP 信誉的消耗。两层的成本曲线方向相反,所以“软件免费”推不出“服务免费”。
“免费”在广告里通常指四件事之一。下载免费,安装包不要钱,节点另算。使用免费,不要账号与内购,但可能限速限量。服务免费,服务器由公益、广告或试用预算承担。长期免费,需要证据,包括资金来源、条款与已经运行的时间。前两种能靠软件本身成立,后两种要看别人愿意付多久的钱。
开源在这里的作用是让核验成为可能。代码公开,构建流程可以检查,发布包的哈希可以比对,部分项目还提供构建证明。它不能证明维护者可信,也不能证明某个安装包没有被替换。仓库可以转让,维护者账号可能被盗,发布页文件可以重新上传。核验解决的是“这个文件是不是发布者放上去的那一个”,信任问题另有一套判断。
本文的范围有三条。只讨论可以公开核验的开源项目与官方文档,不讨论破解版、绿色版和聚合下载站。只解释软件层与协议层,不提供节点、订阅链接和具体服务名称。不承诺版本号、下载量、兼容性和速度,这些数字会过期,承诺也会过期。不同司法辖区对代理工具的规定不同,使用前自行确认当地法律、服务条款与可接受使用政策。
判断顺序也固定下来。先看来源能不能核验,再看权限是否与功能匹配,再看协议与订阅是否对得上,最后才比较界面和更新频率。价格不进入这个顺序,因为软件层通常免费,花钱的地方在服务层。想先弄清两层能力的差异,可以配合免费梯子专题读。
客户端与内核的分工
内核把流量送出去。它读取配置文件,校验字段,监听本地端口,按规则判断直连还是代理,与入口服务器完成握手,处理 DNS,在 TUN 模式下读写虚拟网卡。它不提供服务器,不负责订阅鉴权,也不评价节点质量。
图形客户端让人能操作内核。它下载并解析订阅,把订阅转换成内核认识的格式,启动和停止内核进程,展示日志,写系统代理,申请权限,检查更新。多数客户端不转发流量。界面卡住时连接可能仍然正常,界面显示已连接时本地端口也可能没有监听。
| 项目 | 类型 | 主要运行平台 | 配置形态 | 官方仓库 |
|---|---|---|---|---|
| Mihomo | 内核 | Windows、macOS、Linux、路由器 | YAML | MetaCubeX/mihomo |
| Xray-core | 内核 | 跨平台 | JSON | XTLS/Xray-core |
| sing-box | 内核 | 跨平台 | JSON | SagerNet/sing-box |
| Clash Verge Rev | 图形客户端 | Windows、macOS、Linux | 生成 YAML | clash-verge-rev |
| Mihomo Party | 图形客户端 | Windows、macOS、Linux | 生成 YAML | mihomo-party |
| v2rayN | 图形客户端 | Windows | 生成 JSON | 2dust/v2rayN |
| v2rayNG | 图形客户端 | Android | 生成 JSON | 2dust/v2rayNG |
| FlClash | 图形客户端 | Android、Windows、macOS、Linux | 生成 YAML | chen08209/FlClash |
| Hiddify | 图形客户端 | Windows、macOS、Linux、Android、iOS | 生成 JSON | hiddify/hiddify-app |
| OpenClash | 路由插件 | OpenWrt | 生成 YAML | vernesong/OpenClash |
text
[项目官方 Releases]
│ 下载安装包、校验和、签名
▼
[图形客户端] ──生成──► [配置文件 YAML 或 JSON]
│ 启动与停止 │ 读取
│ 写系统代理 ▼
│ [内核进程]
│ │ 监听 127.0.0.1:端口
▼ ▼
[系统代理设置] ─────────► [本地代理端口] ──隧道──► [入口服务器] ──► [目标站点]这张图有一条容易看错的边,图形客户端不在数据路径上。它只生成配置、启动进程、把系统代理指向内核。流量从应用直接进入本地端口,再进入隧道。排查时先确认内核进程是否存在、端口是否在听,再回头看界面状态。
三种组合各有代价。同项目配套最省事,界面与内核的字段约定由同一批人维护,升级时不容易错配。跨项目组合更灵活,一个界面可以切换多个内核,代价是字段转换由界面负责,新字段可能被丢弃。纯内核加手写配置最可控,适合服务器和路由器,代价是没有订阅管理与系统代理开关。
版本约束有三个变量,界面版本、内核版本、配置或订阅格式版本。界面写入的新字段,旧内核可能不认识。内核移除的旧字段,旧界面生成的配置可能启动失败。订阅格式变化后,旧内核也可能拒绝连接。排查时把三个版本分别记下来。
为什么换一个界面有时能解决问题。内核相同,界面的默认值、订阅转换方式、DNS 策略、规则语法支持程度都可能不同。一个界面丢掉域名规则,另一个保留,表现就是同样的节点一个能分流一个不能。遇到差异,先比对生成的配置文件。
协议支持怎么读
协议是一套握手与封装约定,不是品牌。客户端说“支持某协议”,通常包含两件事,能解析这种节点,能实现这套握手。两件事缺一件,节点能显示但连不上。
| 协议 | 传输 | 加密与认证 | Mihomo | Xray-core | sing-box |
|---|---|---|---|---|---|
| Shadowsocks | TCP 与 UDP | AEAD,预共享密钥 | 列出 | 列出 | 列出 |
| VMess | TCP 及多种传输 | 自建加密与时间校验 | 列出 | 列出 | 列出 |
| VLESS | TCP、WebSocket、gRPC 等 | 自身不加密,依赖外层 TLS | 列出 | 列出 | 列出 |
| Trojan | TCP | TLS 与密码认证 | 列出 | 列出 | 列出 |
| Hysteria2 | UDP,基于 QUIC | QUIC 的 TLS 1.3 与密码 | 列出 | 未列出 | 列出 |
| TUIC | UDP,基于 QUIC | QUIC 与令牌 | 列出 | 未列出 | 列出 |
| WireGuard | UDP | Noise_IK 握手 | 出站 | 出站 | 支持 |
| REALITY | TCP,TLS 握手改造 | 借用目标站点证书 | 客户端 | 协议提出方 | 客户端 |
| SOCKS5 与 HTTP | TCP | 本地无加密或用户名密码 | 入站 | 入站 | 入站 |
表里的“列出”指官方文档或仓库说明中出现了该协议,不构成版本兼容承诺。协议实现会随项目调整,传输组合的支持范围也会变。看到订阅里是某种协议,先去内核文档确认,再去查线路。排除法比反复换节点有效。
读表的顺序有四步。先看订阅里每个节点的协议字段,再看传输字段,例如 TCP、WebSocket、gRPC、HTTP Upgrade、QUIC。然后对照内核文档确认这两项的组合被支持。最后才选图形界面,因为界面只负责把订阅转换成配置,真正握手的是内核。
| 订阅形态 | 外观 | 常见用途 | 适配的客户端 |
|---|---|---|---|
| Clash YAML | 可读的 YAML,含 proxies 与 rules | Mihomo 系客户端 | Clash Verge Rev、Mihomo Party、FlClash、OpenClash |
| Base64 链接列表 | 一串 Base64,解码后每行一个 URI | 通用订阅 | v2rayN、v2rayNG、Hiddify |
| sing-box JSON | 顶层含 outbounds 的 JSON | sing-box 系客户端 | Hiddify、sing-box 官方客户端 |
| 单节点 URI | ss://、vmess://、vless://、trojan:// 等 | 手工导入 | 多数客户端 |
订阅转换服务要单独说。把订阅链接粘到第三方网页,对方就拿到了你的完整节点列表,部分实现还会记录链接与来源 IP。需要转换时优先用客户端内置的转换,或者在本机运行转换工具。转换后的配置文件同样包含节点凭据,不要随手分享。
协议支持与线路质量是两件事。内核能完成握手,说明协议层通了,速度、丢包与可用率取决于入口、链路与目标站点。协议决定能不能连,线路决定连上以后怎么样,分开测才有结论。
平台矩阵
平台差异主要来自权限模型与流量接管的位置,界面长相排在后面。同一份订阅在手机上能用、在电脑上不能用,多数时候是接管方式不同,配置本身没有坏。下表列出十个常见运行环境,取值属于平台机制与工程惯例,不含版本号、下载量与性能数据。
| 平台 | 官方分发形态 | 流量接管 | 所需权限 | 主要限制 | 核验要点 |
|---|---|---|---|---|---|
| Windows 10 与 11 桌面 | 项目 Release 的 exe 或压缩包,少数有包管理器清单 | 系统代理或 wintun 虚拟网卡 | 系统代理无需提权,TUN 需管理员或后台服务 | UWP 回环限制,两个客户端会抢同一端口 | 签名主体、安装包哈希、服务是否常驻 |
| Windows 便携与命令行 | 单文件 exe 或 zip | 系统代理、环境变量或 TUN | 同左,服务模式需管理员 | 配置不持久,更新要手动替换 | 是否从官方 Release 解压,目录是否被改写 |
| Android 手机与平板 | Release 的 APK,少数在应用商店 | VpnService 建立的隧道 | 首次连接逐次授权 VPN | 同时只能有一个 VPN 应用,省电策略会断开 | APK 签名证书、包名、权限清单 |
| iOS 与 iPadOS | App Store 按账号地区可见,或 TestFlight | Network Extension | 安装时授权 VPN 配置 | 商店地区限制,测试版有期限,无法侧载 | 开发者主体、商店页面、隐私标签 |
| macOS Apple 芯片 | Release 的 dmg 或 zip,或 Homebrew cask | 系统代理或 utun | 系统代理免提权,TUN 需 helper 或系统扩展 | 公证与 Gatekeeper,扩展要在系统设置里允许 | 代码签名、公证状态、资产架构 |
| macOS Intel | 同上,需要选 x86_64 资产 | 同上 | 同上 | 部分项目只发 arm64 或通用包,需读资产说明 | 资产架构、签名、公证 |
| Linux 桌面 | Release 的 AppImage、deb、rpm 或压缩包 | 环境变量、系统代理或 TUN | TUN 需 root 或 CAP_NET_ADMIN | 桌面环境代理设置不统一,Wayland 下部分工具受限 | 包管理器签名、二进制哈希、服务单元 |
| Linux 服务器与网关 | 官方二进制、发行版仓库或容器镜像 | TUN、TPROXY 或 REDIRECT | root 或网络能力 | 无图形界面,要手写配置与防火墙规则 | 二进制来源、systemd 单元、nftables 规则 |
| OpenWrt 路由器 | opkg 软件包或项目安装脚本 | TPROXY、REDIRECT 或 TUN | root | 闪存空间有限,固件升级可能丢配置 | 软件源签名、插件版本、剩余空间 |
| 容器与软路由 | 官方或社区镜像 | 宿主网络、macvlan 或 TUN | 容器网络能力 | 镜像标签可能漂移,网络命名空间增加排查难度 | 镜像摘要、构建来源、挂载的配置目录 |
桌面端的三个接管位置
系统代理是一份设置,只对愿意读取它的应用生效,浏览器通常读,游戏与命令行工具经常不读。TUN 是虚拟网卡加路由,覆盖路由表匹配的流量,需要更高权限。网关模式把接管位置移到路由器,影响全屋,回滚要提前准备。
移动端的授权模型
Android 通过 VpnService 建立隧道。系统同时只允许一个 VPN 应用活动,第二个应用启动会顶掉第一个。分应用代理决定哪些应用进入隧道,名单之外的流量走本地网络。省电策略可能在后台杀掉进程,表现为锁屏一段时间后连接消失。
iOS 通过 Network Extension 运行隧道。应用要在 App Store 上架,需要开发者账号、审核和按地区的可见性。TestFlight 是另一条分发路径,有名额和有效期,到期后需要新的构建。系统不提供面向普通用户的侧载入口,所以“从网页下载一个 ipa 装上”这条路在正常设备上走不通。
Apple 平台的两个门槛
第一个门槛是分发地区。App Store 的可见性由账号所属商店地区决定,开发者也可以选择只在部分地区上架。第二个门槛是签名与公证。macOS 默认只运行有开发者签名且通过公证的应用,未签名的构建会被 Gatekeeper 拦下。需要长期使用的工具,优先选有签名与公证的正式发布包。
路由器与服务器的差别
两者都要处理透明代理、DNS 接管与防火墙规则。OpenWrt 有 LuCI 和 opkg,Linux 服务器有包管理器和 systemd。共同点是权限大、影响面大、出错后不容易远程恢复。改动前留一份可回滚的配置,最好保留一条不经过代理的管理通道。
官方 Release 怎么读
下载页面不是只有一颗按钮。一个规范的 Release 至少包含版本标签、资产列表、发布说明,很多项目还会附上校验和与签名。读不懂这几块,后面的哈希与签名核验就没有参照物。
页面上有哪几块
版本标签标识这一次发布,发布说明写改动与破坏性变更,资产列表放各个平台与架构的安装包。GitHub 会自动附带源码压缩包,那是标签对应的快照,不是编译好的程序,普通用户不需要下载。
“Latest”标记由平台根据发布时间与标签生成,不等于“最稳定”。预发布标签、候选版本、夜间构建都可能出现在列表里。需要稳定使用时,选正式版本,读一遍发布说明里关于配置字段的部分。
资产命名通常包含项目名、版本、系统、架构与扩展名。架构至少要分清 x86_64、arm64、armv7 与通用包。把 x86_64 的包装到 ARM 设备上,表现是直接无法启动,或者被系统转译后行为异常。Windows on ARM、Apple 芯片、部分路由器都属于容易选错的平台。
校验和与签名分别回答什么
校验和回答文件有没有被改动。发布者把安装包的 SHA-256 写进一个文本文件,下载后自己算一遍,两个值一致,说明文件内容与发布者声明的一致。它不回答发布者是谁,也不回答这个文件是否安全。
签名回答文件是谁发布的。Windows 用 Authenticode,macOS 用 Developer ID 加公证,Android 用 APK 签名证书,Linux 项目常用 GPG 分离签名。签名验证通过,说明文件由持有该私钥的一方签出,且在签名后没有被修改。它不证明代码没有漏洞,也不证明发布者不会作恶。
两个都要做,顺序是先哈希再签名。哈希便宜,能排除下载损坏与镜像替换。签名能确认发布者身份。只做哈希,等于相信校验和文件没有被换过。只做签名,遇到签名流程不规范的项目会卡住。
text
[项目官方仓库]
│ 只从仓库进入 Releases
▼
[Release 页面] ── 核对标签、日期、发布说明
│
├─ 安装包(系统与架构要对)
├─ 校验和文件(同一个 Release)
└─ 签名文件(若有)
▼
[SHA-256 比对] ── 不一致 ──► 删除重下,仍不一致则放弃
│ 一致
▼
[签名验证] ── 失败 ──► 停止安装,记录签名主体与错误
│ 通过
▼
[安装] ──► [首次启动检查端口、权限、更新地址] ──► [记录证据]命令清单
| 平台 | 哈希 | 签名 | 备注 |
|---|---|---|---|
| Windows PowerShell | Get-FileHash .\file.exe -Algorithm SHA256 | Get-AuthenticodeSignature .\file.exe | 也可用 signtool 验证 |
| Windows CMD | certutil -hashfile file.exe SHA256 | 无内置命令 | 结果与发布页比对 |
| macOS | shasum -a 256 file.dmg | codesign -dv --verbose=4 与 spctl -a -vv | 公证可用 stapler 检查 |
| Linux | sha256sum file.AppImage | gpg --verify file.sig file | 需要发布者的公钥与指纹 |
| Android | 在电脑上算 APK 的 SHA-256 | apksigner verify --print-certs | 证书指纹要与官方公布的一致 |
命令只做一件事,把文件内容变成一个固定长度的摘要,或者把签名与文件内容做一次数学核对。摘要一致不代表没有漏洞,签名有效也不代表行为正当。它们回答的是完整性与来源,这两个问题必须先有答案,后面的权限与行为检查才有意义。
校验和文件的可信来源
校验和文件必须与安装包来自同一个 Release 页面。从论坛、网盘、聊天群拿到的校验和没有意义,因为改安装包的人可以顺手改掉校验和。项目提供签名时,优先验证签名的校验和文件,这样攻击者要同时改两个文件才能通过。
GPG 签名还有一个公钥分发问题。公钥要从项目文档、独立域名或多个渠道交叉确认,不能只信签名文件旁边的那一个。指纹对不上,说明拿到的是另一把钥匙。
TUN 与系统代理
这两个词经常被当成两种速度模式,实际差别在接管范围与权限。系统代理改的是一份设置,TUN 改的是路由表。前者像告诉应用“出门往这边走”,后者直接把门口的路改了。
text
系统代理模式
[读取系统代理的应用] ──► [127.0.0.1:端口] ──► [内核] ──► [入口服务器]
[不读系统代理的应用] ──────────────────────► [本地网卡] ──► [目标站点]
TUN 模式
[所有匹配路由的应用] ──► [路由表] ──► [tun 虚拟网卡] ──► [内核] ──► [入口服务器]| 维度 | 系统代理 | TUN |
|---|---|---|
| 覆盖范围 | 读取系统代理设置的应用 | 路由表匹配到的流量 |
| UDP | 多数不接管 | 可以接管 |
| DNS | 取决于应用自身 | 可在内核内统一处理 |
| 权限 | 普通用户 | 管理员、服务或系统扩展 |
| 故障影响 | 单个应用或浏览器 | 整机断网 |
| 退出恢复 | 多数自动恢复 | 需要恢复路由与 DNS |
| IPv6 | 取决于应用 | 需要单独配置 |
什么时候系统代理够用
浏览器查资料、收发邮件、看网页视频,系统代理基本够。它不需要提权,退出后设置恢复,适合共用电脑和临时使用。缺点是覆盖不全,命令行工具、部分游戏、自带网络栈的应用会直接绕过。
判断一个应用是否读系统代理,最直接的方法是开着代理访问一个显示出口地址的页面,再对比关闭代理时的结果。两次一致,说明这个应用没有走代理。
什么时候需要 TUN
需要接管 UDP、需要覆盖不读系统代理的应用、需要让 DNS 走统一策略时,用 TUN。它在路由层工作,应用不需要知道自己被代理。代价是权限更高,出错时影响整台设备。
TUN 的常见故障有四类。DNS 环路,内核把 DNS 请求转发给自己,解析超时。路由冲突,虚拟网卡的路由覆盖了局域网网段,打印机和投屏失联。MTU 不匹配,小包通大包丢,网页加载到一半停住。IPv6 没有接管,部分流量绕过隧道。四类都能通过日志与路由表定位,不需要重装系统。
两种模式不要同时开
同时开启时,实际行为取决于路由优先级与客户端实现,可能出现回环或部分流量走错出口。切换时先关掉一个,确认系统代理与路由表恢复,再开另一个。切换后重新检查出口地址。
权限
权限决定软件能做什么,也决定出问题时影响多大。代理软件需要网络能力,部分模式还需要改路由与 DNS,这些都是高权限操作。判断授权是否合理,看它是否与当前功能匹配,以及能不能随时撤销。
| 平台 | 授权形式 | 授权范围 | 何时需要 | 如何撤销 |
|---|---|---|---|---|
| Windows | UAC 提权或安装系统服务 | 创建虚拟网卡、修改路由 | TUN、服务模式、开机自启 | 停止服务,取消开机启动 |
| macOS | 管理员授权安装 helper 或系统扩展 | 路由、DNS、网络扩展 | TUN | 在系统设置中移除扩展 |
| Android | VpnService 授权弹窗 | 全部或选定应用的流量 | 每次建立隧道 | 断开连接或撤销授权 |
| iOS | VPN 配置授权 | Network Extension 隧道 | 安装配置时 | 在设置中删除 VPN 配置 |
| Linux | root 或 CAP_NET_ADMIN | 创建 tun、修改路由与防火墙 | TUN、TPROXY | 停止进程,收回能力 |
| OpenWrt | root | 全机流量、防火墙、DNS | 透明代理 | 卸载插件,恢复规则 |
授权是否合理,要看它保留多久。只在需要 TUN 时提权,用完切回系统代理并确认服务停止。检查开机启动项,确认没有多余的守护进程。系统大版本更新后重新看一遍扩展与授权状态,更新有时会重置这些设置。
不要给来源不明的二进制提权。普通用户权限的程序被替换,影响当前账号。以管理员或 root 运行的内核被替换,影响整台设备。来源核验与权限最小化要一起做。
更新与版本错配
更新同时是维护动作与供应链动作。它修复漏洞、补上协议支持,也带来新的字段、新的依赖与新的攻击面。把更新当成“点一下升级”,版本错配就会以故障的形式出现。
三个版本变量
界面版本决定订阅怎么解析、配置怎么写、权限怎么申请。内核版本决定协议支持、字段识别与转发行为。配置或订阅格式决定两端能不能对上。三个变量里任何一个单独变化,都可能让原本可用的组合失效。
还有两个容易被忽略的变量。系统版本决定运行库、网络扩展与权限模型,系统大版本更新后,旧的 helper 或扩展可能失效。服务端版本对用户不可见,服务端升级传输方式后,客户端只能通过日志里的握手失败察觉。
症状与原因的对应
| 现象 | 常见原因 | 先查什么 | 处理方向 |
|---|---|---|---|
| 双击后闪退 | 架构不对、缺运行库 | 终端启动看第一条错误 | 换对应架构,补依赖 |
| 显示已连接但没有流量 | 内核没启动、端口不一致 | 进程列表与监听端口 | 重启内核,统一端口 |
| 订阅更新后节点为空 | 格式不匹配、解析失败 | 订阅原始响应 | 换格式或换客户端 |
| 日志报未知字段 | 配置比内核新 | 内核版本与字段说明 | 升级内核或删字段 |
| 日志报协议不支持 | 内核缺该协议 | 官方协议列表 | 换内核 |
| 升级后全部超时 | 规则或 DNS 默认值变了 | 发布说明与配置差异 | 回滚到上一版 |
更新策略
固定版本适合追求稳定的环境。选一个验证过的版本,记录哈希,关闭自动更新,按需升级。升级前备份配置,升级后先验证本地端口与一条可用线路。
跟随更新适合需要新协议与新修复的环境。每次升级读发布说明,重点看破坏性变更、配置字段、权限变化。界面与内核配套发布时一起升级,跨项目组合时分别确认两边的兼容范围。
自动更新省事,代价是把更新通道交给了软件。使用自动更新前确认三件事,更新包从哪里下载,下载后是否验证签名,能不能关闭或延迟。更新地址指向第三方域名、更新包没有签名、无法回滚,这三条出现任意一条,就应该改成手动更新。
回滚要准备什么
保留上一个版本的安装包、对应的配置文件、以及一份可用的订阅快照。回滚时先退出程序,替换二进制,恢复配置,再启动。只替换二进制而保留新配置,可能继续报字段错误。只恢复配置而保留新内核,可能遇到已移除的字段。
版本号不写进操作步骤,因为它会过期。判断方法写在发布页上,按标签、资产与发布说明读,任何时间都适用。
恶意安装包识别
恶意安装包很少长着一副可疑的样子。它通常有完整的官网、漂亮的截图、和正版几乎一样的图标,差别在域名的一个字母、下载按钮指向的地址、安装包里多出来的一个进程。
高风险渠道
搜索引擎广告位排在自然结果前面,落地页可以做得与官网一致。仿冒域名常用近似拼写、多余连字符、换顶级域名。网盘与聊天群文件没有发布者身份。绿色版、破解版、汉化版通常由第三方重新打包,原来的签名与哈希全部失效。
浏览器扩展商店也有山寨条目。扩展能读取页面内容、修改请求头、替换下载地址,权限比一个桌面客户端更隐蔽。需要扩展配合时,确认开发者与项目官方文档里给出的是同一个。
到手前的十项检查
- 域名与仓库归属是否对得上,项目文档里的官方地址是不是同一个。
- 下载链接最终指向哪里,是否跳出官方域名。
- 文件名是否与 Release 资产列表一致,系统与架构是否匹配。
- SHA-256 是否与同一 Release 的校验和一致。
- 签名主体是否是项目公布的发布者,证书是否在有效期内。
- 安装过程是否要求关闭杀毒软件或系统保护。
- 是否要求安装根证书,理由是否与功能直接相关。
- 是否创建系统服务、计划任务、开机启动项。
- 是否修改 hosts、系统代理、防火墙规则。
- 是否索取与代理无关的权限,例如通讯录、短信、无障碍、麦克风。
十项里出现两项异常,就停止安装。已经装上的,先断网再处理,不要一边怀疑一边继续登录账号。
装上以后看什么
看进程数量与签名。一个界面加一个内核是常见结构,多出没有签名的常驻进程就值得查。看开机启动项与服务列表,代理软件通常只需要一个自启入口。看证书列表,多出未知根证书意味着有人可以解密 HTTPS。看浏览器主页与代理设置是否被改。
网络侧也能看出问题。客户端启动后出现与项目无关的域名请求,或者在没有开启代理时仍有持续外连,都需要进一步确认。普通用户不必抓包,系统自带的资源监视器与连接列表足够做第一轮筛查。
疑似中招后的处理顺序
先断网,保留样本与哈希。结束相关进程,卸载程序,删除残留的服务、计划任务、启动项与证书。恢复浏览器主页、系统代理与 hosts。然后在另一台设备上修改重要账号的密码,撤销活跃会话,检查登录记录与支付授权。最后做一次完整扫描,确认没有留下持久化项。
处理顺序是先切断外连再清理,避免清理过程中继续泄露凭据。样本不要运行第二次,哈希可以留作比对。更细的权限判断,放在免费代理软件是否安全里展开。
选型决策树
下面这棵树按设备、接管方式、权限、订阅格式四层分流,走到叶子节点就是一个可执行的组合。树里不写版本号,也不写服务名称,换一个项目仍然按同样的路径判断。
text
要在一台设备上使用开源客户端
├─ 第 1 层 设备类型
│ ├─ Windows
│ │ ├─ 第 2 层 是否需要接管全部应用
│ │ │ ├─ 需要
│ │ │ │ ├─ 第 3 层 能否接受管理员权限
│ │ │ │ │ ├─ 能
│ │ │ │ │ │ ├─ 第 4 层 订阅是 Clash YAML ──► Mihomo 系界面加 TUN
│ │ │ │ │ │ ├─ 第 4 层 订阅是通用 URI ────► v2rayN 加 TUN
│ │ │ │ │ │ └─ 第 4 层 订阅是 sing-box JSON ► Hiddify
│ │ │ │ │ └─ 不能 ──► 系统代理加对应界面,接受覆盖不全
│ │ │ └─ 不需要 ──► 系统代理,按订阅格式选界面
│ ├─ Android
│ │ ├─ 第 2 层 是否需要分应用代理
│ │ │ ├─ 需要 ──► 第 3 层 订阅是 Clash YAML ──► FlClash
│ │ │ │ └─ 通用 URI ───────► v2rayNG
│ │ │ └─ 不需要 ──► 第 3 层 订阅是 sing-box JSON ► Hiddify
│ ├─ iOS
│ │ ├─ 第 2 层 当前商店地区能否搜到
│ │ │ ├─ 能 ──► 第 3 层 按应用支持的订阅格式选
│ │ │ └─ 不能 ──► 停在这里,只判断机制,不找侧载
│ ├─ macOS
│ │ ├─ 第 2 层 是否需要 TUN
│ │ │ ├─ 需要 ──► 第 3 层 接受系统扩展授权 ──► Mihomo 系界面
│ │ │ └─ 不需要 ──► 第 3 层 菜单栏操作 ──► 系统代理模式
│ ├─ Linux
│ │ ├─ 第 2 层 单机还是网关
│ │ │ ├─ 单机 ──► 第 3 层 命令行或桌面界面
│ │ │ └─ 网关 ──► 第 3 层 TUN 或 TPROXY 加防火墙
│ └─ 路由器
│ ├─ 第 2 层 闪存空间是否足够
│ │ ├─ 足够 ──► 第 3 层 插件加内核
│ │ └─ 不足 ──► 第 3 层 外置存储或旁路由
└─ 附加判断 权限与更新谁来管
├─ 自己管 ──► 固定版本,手动核验
└─ 别人管 ──► 先确认对方用什么来源与更新通道树的用法是先走设备分支,再回答接管与权限,最后才看订阅格式。顺序反过来容易先选一个界面,装完才发现订阅解析不了,或者权限不够开 TUN。
维护的时间账
开源软件不收许可费,维护时间仍然有价格。把时间写成公式,才能和付费方案放在一起比较。
text
月维护时间 = 更新次数 × 单次更新时间 + 故障次数 × 单次排查时间 + 订阅整理时间
年化维护成本 = 月维护时间 × 12 × 时薪 + 一次性学习时间 × 时薪按测算假设举例。每月更新两次,每次十分钟。每月遇到两次连接故障,每次二十分钟。订阅整理十分钟。合计七十分钟,约一点一七小时。时薪按六十元计算,月维护成本约七十元,年化约八百四十元。这是测算,不是市场报价,换一个时薪或故障次数,结果会变。
三种维护策略的取舍不同。追新策略的更新时间最长,换来最新的协议支持。固定版本策略的更新时间短,遇到新协议时需要额外升级。自动更新策略的更新时间最短,代价是更新通道成为一个需要信任的环节。选哪种取决于用途,工作设备偏稳定,实验设备可以追新。
核验方法与可复现条件
核验要留下别人能照着复做的记录。只有一句“我核对过”,无法区分认真检查与随便看看。下面这张表列出最小字段,采集方式都是系统自带工具或公开页面。
| 项目 | 采集方式 | 格式或单位 | 复现条件 |
|---|---|---|---|
| 访问时间 | 浏览器或系统时钟 | 日期与时区 | 记录到日 |
| 发布页地址 | 浏览器地址栏 | URL | 从官方仓库进入 |
| 版本标签 | Release 页面 | 字符串 | 与资产文件对应 |
| 资产文件名 | Release 页面 | 文件名 | 含系统与架构 |
| SHA-256 | 系统命令 | 64 位十六进制 | 下载完成后立即计算 |
| 签名主体 | 系统签名工具 | 主体名称 | 安装前验证 |
| 监听端口 | netstat 或 ss | 端口号 | 内核启动后 |
| 路由与 DNS | 系统网络工具 | 表项 | TUN 开启后 |
| 权限清单 | 系统设置 | 项 | 安装后与更新后各看一次 |
本站的检测口径写在资源检测的方法一节,包含采样次数、环境描述与证据格式。软件核验不测速度,但同样要求时间、环境与证据三要素齐全。缺一项,结论就只能算个人印象。
安全、隐私与合规边界
开源让代码可查,不能让流量匿名。隧道加密的是设备到入口服务器这一段,出口之后的连接由服务方发起,目标站点看到的是出口地址。链路上的观察者看不到内容,仍然能看到连接时间、流量体积与 TLS 握手里的域名。
客户端权限扩大了可见范围。以管理员运行的内核可以读取所有经过它的流量与 DNS 查询。来源可信时,这些能力用于转发。来源不可信时,同样的能力用于收集。先确认来源,再决定给多大权限。
日志与订阅也是敏感数据。客户端日志会记录目标域名、时间与命中规则,贴到公开社区前要删干净。订阅链接通常包含账号令牌,截图、云笔记、剪贴板同步都是泄露路径。把订阅当密码管理,比事后补救便宜。
不同司法辖区对代理工具与加密通信的规定不同,使用前自行确认当地法律、服务条款与可接受使用政策。本站不提供规避执法、规避实名制或绕过企业网络管理的操作步骤。软件开源、协议公开,不代表使用场景自动合规。
常见问题
开源客户端是不是完全免费
软件许可免费,服务器不免费。内核与界面可以从官方仓库免费下载,节点仍然要由服务方或自建者出钱。判断一条方案是否真免费,看有没有人为出口带宽付钱。没有的话,免费通常只持续到出资方停止投入。客户端更新得再勤,也不会自动产生可用节点,把这两层分开,选型时就不会把希望寄托在换界面上。
客户端和内核一定要用同一个项目吗
不必,但要匹配。界面生成配置,内核读取配置,字段对得上就能工作。跨项目组合的风险在版本与字段转换,界面可能丢掉它不认识的新字段。出问题时分别记录界面与内核版本,再比对生成的配置文件,比反复重装更接近原因。版本号不必背下来,知道去发布页的哪个位置看,再保留一份能启动的旧组合,就够用了。
从 GitHub Releases 下载就一定安全吗
不一定。平台只保证托管,不保证仓库质量与发布流程。判断依据是仓库归属、签名主体、校验和是否齐全。维护者账号被盗后发布带后门安装包的情况发生过。下载量与收藏数不能当安全证据,哈希与签名才是可复算的证据。发布页可以被修改或删除,核验记录要连同访问日期一起保存,否则过几天就无法复现。
系统代理和 TUN 应该选哪个
看应用是否读取系统代理,以及是否需要 UDP。只浏览网页时系统代理够用,不用提权,退出即恢复。需要游戏、语音、HTTP/3 或覆盖全部应用时用 TUN。TUN 改路由表,配置错误会影响整机,开启前准备好回滚办法。先确定要接管哪些流量,再决定授权范围,顺序反过来容易为了一点便利长期保留高权限,这类授权值得定期复查。
手机上为什么只能同时开一个 VPN
Android 的 VpnService 同一时刻只允许一个应用建立隧道,第二个应用启动会顶掉第一个。iOS 的 Network Extension 通常也只有一个配置处于活动状态。想同时用两个客户端,只能在系统层面做取舍,或者把其中一个改成只代理部分应用。分应用名单能减少冲突,不能绕过单隧道限制。需要两个出口同时工作时,只能换设备或改到路由器上。
iOS 上搜不到客户端怎么办
先确认当前 App Store 账号所属地区,再看应用是否仍在架。开发者可以选择只在部分地区上架,下架后已购记录与更新也会受影响。TestFlight 有测试名额与有效期。系统不提供常规侧载方式,从网页下载 ipa 安装这条路在多数设备上走不通。商店可见性会随地区和时间变化,这里不构成购买建议,也不讨论切换账号地区,正常设备上没有第二条官方安装路径。
订阅导入成功但连不上是什么原因
先看协议与传输是否被内核支持。节点列表来自订阅文本,能显示不代表能握手。再看服务端参数是否变更,最后看出站握手日志停在哪一步。停在 TCP 连接,问题在地址与端口。停在 TLS 握手,问题在协议特征、证书或系统时间。按日志分层排查,比反复换节点省时间,也更容易留下可复现的记录,顺序不要跳过。
提示内核版本不匹配怎么办
记录界面、内核、配置格式三个版本,对照发布说明找字段变更。用内核自带的配置校验命令验证文件,通过后再启动。回退到上一个可用版本通常比逐行改配置快。升级前备份配置与旧安装包,回滚时两者一起恢复。保留一份能启动的旧组合,比记住版本号有用。每次升级前先备份,配置更难恢复。
旧版本还能继续用吗
短期内通常可以,长期要评估。旧版本的风险来自未修复漏洞与协议变化,服务端启用新传输方式后可能直接失效。迁移时先导出配置与规则,确认新客户端支持订阅里的全部协议,再切换,并保留旧版本一段时间用于回退。能不能继续用,取决于它还能不能完成握手,以及现有配置是否还承认那些字段。
安装包被杀毒软件报毒要不要继续
先停下来查来源。报毒可能是启发式误报,也可能是真的捆绑了东西。核对哈希与签名,确认文件来自官方 Release。签名有效但主体陌生,仍然不要装。无法排除时,放弃这个安装包,换官方渠道重新下载,不要在原文件上反复尝试。安全软件的判断不总是准确,来源核验能给出第二意见,两者都指向可疑时就放弃。
数据来源与更新记录
页面里的平台机制、协议行为与命令来自公开规范、项目官方文档与平台开发者文档。第三方打包站、聚合下载页与论坛转贴不作为来源。
| 来源 | 用途 | 链接 | 核验日期 |
|---|---|---|---|
| Mihomo 文档与仓库 | 内核定位、配置字段、规则写法 | wiki.metacubex.one | 2026-10-24 |
| Xray-core 仓库与文档 | 协议列表、配置结构 | XTLS/Xray-core | 2026-10-24 |
| sing-box 文档 | 协议支持、平台客户端 | sing-box.sagernet.org | 2026-10-24 |
| v2rayN 与 v2rayNG 仓库 | Windows 与 Android 客户端形态 | 2dust/v2rayN | 2026-10-24 |
| Android VpnService | 单隧道限制与授权模型 | developer.android.com | 2026-10-24 |
| Apple Network Extension | 系统扩展与隧道配置 | developer.apple.com | 2026-10-24 |
| Wintun | Windows 虚拟网卡 | wintun.net | 2026-10-24 |
| RFC 1928 | SOCKS5 握手与地址格式 | rfc-editor.org | 2026-10-24 |
| RFC 8446 | TLS 1.3 握手与恢复 | rfc-editor.org | 2026-10-24 |
| RFC 9000 | QUIC 传输与连接迁移 | rfc-editor.org | 2026-10-24 |
| SLSA | 构建来源与供应链完整性的公开框架 | slsa.dev | 2026-10-24 |
更新记录
| 日期 | 变更 | 影响范围 |
|---|---|---|
| 2026-10-24 | 首次发布,建立三层拆分、平台矩阵与核验流程 | 全页 |
| 2026-11-07 | 计划复核官方仓库、平台文档与命令清单 | 来源、权限与更新部分 |
版本号不写进正文,因为版本会变,写死的数字很快过期。需要版本信息时,以对应项目的发布页为准。页面中的时间与成本数字全部标注为测算假设,不是实测,也不是市场报价。
下一步
先做一次来源与权限检查,再谈订阅与速度。免费代理软件专题把平台差异、TUN 配置与故障现象拆得更细。免费代理软件是否安全给出安装包与权限的检查顺序。第一次配置可以按新手帮助的路径走,从术语到可用连接,每一步都留了回退点。