问题诊断 · 客户端

macOS 提示「已损坏,无法打开」或「无法验证开发者」怎么办

在 Mac 上安装 Clash Verge Rev、ClashX Meta、sing-box 等客户端时,系统弹出「已损坏,无法打开。您应该将它移到废纸篓」或「无法验证开发者」。本文解释 Gatekeeper 的工作原理,给出系统设置和 xattr 命令两种处理方法,说明 Apple 芯片的额外步骤,以及什么情况下不应该绕过这个提示。

这个提示到底在说什么

macOS 有一套叫 Gatekeeper 的机制:从网络下载的文件会被打上一个 com.apple.quarantine 的隔离标记,第一次打开时系统检查它的签名和公证状态。

代理客户端大多是个人或小团队维护的开源项目,一年 99 美元的开发者账号加上公证流程对他们来说是负担,加上这类软件本身的性质,很多项目选择不签名或只做 ad-hoc 签名。所以「已损坏」在这类软件上几乎是常态,不代表文件真的损坏。

方法一:系统设置里允许

适用于「无法验证开发者」,部分「已损坏」也能用这个方法。

  1. 双击打开应用,弹窗出现后点「完成」(不要点「移到废纸篓」)。
  2. 打开「系统设置 → 隐私与安全性」,往下滚到「安全性」区域。
  3. 会看到一行「已阻止使用 xxx,因为来自身份不明的开发者」,右边有「仍要打开」按钮,点它。
  4. 输入密码或 Touch ID 确认,应用就能打开了。以后不会再问。

macOS 15 Sequoia 及之后,系统移除了右键「打开」绕过的方式,必须走这个设置页面。macOS 13 / 14 还可以在 Finder 里右键应用 → 「打开」,弹窗里直接选「打开」。

如果设置页面里根本没有出现这一行,说明系统判定是「已损坏」而不是「身份不明」,用方法二。

方法二:xattr 命令

这是最通用的方法,对「已损坏」有效。

  1. 把应用拖进「应用程序」文件夹。
  2. 打开「终端」(启动台搜索 Terminal)。
  3. 输入下面的命令并回车(把应用名换成实际名字,名字里有空格要用引号包起来):
sudo xattr -cr /Applications/Clash\ Verge.app

或者更稳妥的写法,先输入 sudo xattr -cr 加一个空格,然后把应用图标从 Finder 拖进终端窗口,路径会自动填上,回车。

  1. 输入密码(输入时不显示字符,输完回车)。
  2. 再双击应用打开。

命令解释:xattr 管理文件的扩展属性,-c 清除所有扩展属性,-r 递归处理包内所有文件。它只是去掉系统打的下载隔离标记,不改动应用本身的内容。如果只想删隔离标记而不动其他属性,可以用 sudo xattr -dr com.apple.quarantine /Applications/xxx.app。

常见客户端的应用名:Clash Verge.app、ClashX Meta.app、Mihomo Party.app、FlClash.app、GUI.for.SingBox.app、Surge.app(Surge 有正式签名,一般不会遇到)。

Apple 芯片的额外一步

M 系列芯片的 Mac 对无效签名更严格。xattr 之后仍然提示「已损坏」或者直接闪退,再执行一次本地签名:

sudo codesign --force --deep --sign - /Applications/Clash\ Verge.app

--sign - 表示用临时的 ad-hoc 签名替换原签名,让系统认为这个应用的签名至少是完整的。签完再打开。

部分应用(比如用 Electron 或 Tauri 构建的)签名后首次启动会慢几秒,是正常现象。

和 TUN 模式有关的权限提示

通过了 Gatekeeper 后,客户端开启 TUN 模式时还会遇到另外两类提示,和「已损坏」是两回事:

这些是正常的权限申请,TUN 本来就要操作系统网络栈。拒绝了就只能用系统代理模式。TUN 的问题见 TUN 模式问题。

什么时候不该绕过

Gatekeeper 的存在是有意义的。绕过它意味着系统不再替你检查这个文件,判断全部交给你自己。以下情况请停下来:

  1. 下载来源不是项目官方 GitHub Releases。搜索引擎排在前面的「Clash 下载站」、网盘链接、群文件、机场客服发来的安装包,都有被二次打包的可能。macOS 上出现过多起通过修改版代理客户端植入恶意软件的事件。
  2. 文件哈希和官方发布的对不上。GitHub Releases 一般附有 SHA256,终端里 shasum -a 256 文件名 比对一下。
  3. 提示和你预期的不一致。比如一个官网声明已签名公证的应用(Surge、Stash 等)却提示已损坏,大概率文件被篡改或下载不完整。
  4. 系统提示里出现「恶意软件」字样。macOS 的 XProtect 检测到已知恶意特征时的提示和 Gatekeeper 的「已损坏」措辞不同,前者不要绕过。

下载来源的判断方法见客户端下载安全指南。

其他容易和「已损坏」混在一起的情况

一次性关闭 Gatekeeper 的做法不推荐

网上流传 sudo spctl --master-disable 打开「任何来源」选项。它对所有应用生效,相当于关掉整台电脑的检查。只为一个客户端这么做不值得,而且 macOS 15 后该选项的行为也变了。针对单个应用用 xattr 处理,影响范围最小。

处理顺序

提示第一步第二步
无法验证开发者隐私与安全性 → 仍要打开—
已损坏,无法打开sudo xattr -crApple 芯片再 codesign --sign -
处理后仍闪退重新从 GitHub 下载确认架构(Apple 芯片 / Intel)选对
想安装系统扩展隐私与安全性里允许按提示重启

相关

macOS 客户端推荐 · ClashX Meta 教程 · Clash Verge Rev 教程

常见问题

「已损坏,无法打开」是文件真的坏了吗?

大多数情况不是。这是 macOS Gatekeeper 对没有经过 Apple 公证的应用的统一提示。从项目 GitHub 下载的开源客户端很多都没公证,都会弹这个。

xattr -cr 命令做了什么?

清除应用包上的扩展属性,其中包括下载时系统打的 com.apple.quarantine 隔离标记。清掉之后 Gatekeeper 不再把它当成刚下载的文件检查。

「无法验证开发者」和「已损坏」有什么区别?

「无法验证开发者」是有签名但没公证,可以在隐私与安全性里点「仍要打开」。「已损坏」是没签名或签名无效,一般只能用 xattr 处理。

Apple 芯片的 Mac 还要额外做什么?

部分未签名应用在 Apple 芯片上需要重新本地签名:xattr 之后再运行 codesign --force --deep --sign - 应用路径。

什么时候不该绕过这个提示?

下载来源不是项目官方仓库时。绕过 Gatekeeper 等于放弃系统最后一道检查,只对自己确认过来源的文件做。


本文为信息整理与个人经验,不构成购买建议。机场政策与软件界面可能变化,以官方为准。发现过期内容请 联系纠错。

继续阅读

回到 问题诊断 · 机场推荐 2026 · 排行榜