双击安装包,屏幕蓝了一块,写着 Windows 已保护你的电脑,只有一个不运行的按钮。或者在 Mac 上双击 dmg,弹出来说无法验证开发者。安卓那边更直接,浏览器下完 APK,系统说不允许从此来源安装应用。
这三种提示各自有明确的含义,含义之间差别不小。读懂了,哪一种点掉、哪一种停手,当场就能定。
弹窗之前的那一步才决定要不要放行
这些机制看的是两件事,文件有没有被可信的证书签过名,以及这个文件在全网有没有攒下信誉记录。它们看不出文件内容有没有问题。微软自己的文档写得很清楚,如果一个 URL、文件、应用或证书已经建立了信誉,用户就看不到任何警告,没有信誉的会被标成较高风险并弹出提示。
开源的代理客户端天然容易中招。多数项目没有买昂贵的代码签名证书,每次发新版本又都是一个全新的文件,信誉从零开始攒。所以警告弹不弹,和软件本身好不好没有关系。
真正能判断的只有来源。下载之前先确认这三样里的一样。
- 项目的 GitHub Releases 页面,地址里的仓库名和项目主页写的一致。
- 官方应用商店,App Store、Google Play、各家手机厂商的商店。
- 官网自己的下载页,并且官网地址是从项目仓库的 README 里点过去的。
网盘转存、论坛附件、第三方下载站、带「汉化版」「绿色版」「去广告版」字样的安装包,一律不要。本站每个客户端页的下载按钮只链到官方 Releases 页或者官方商店,不直链安装包,理由就在这里。已经停更的项目更要当心,仓库都没了的软件还有人在到处发它的安装包,情况写在你装的客户端可能已经没人维护了那篇里。
Windows 上那块蓝屏叫 SmartScreen
SmartScreen 是集成在系统里的信誉检查。微软的文档列了它判断下载文件的两条路子,一条是拿文件去比对已知的恶意软件站点和程序名单,另一条是拿文件去比对一份广为人知、经常被下载的文件清单,不在清单上就弹警告提醒谨慎。微软的存档文档还写明,这个提示会在你运行一个新发布的程序或者尚未建立信誉的应用时出现。
蓝屏上默认只有一个「不运行」的按钮,要点左下角的「更多信息」,才会露出文件名、发布者和一个「仍要运行」的按钮。发布者显示未知,说明文件没有 Authenticode 签名,或者签名的证书还没有攒出信誉。
放行之前可以自己核两样。第一样是哈希值,项目的 Releases 页面上常常附有校验文件。
Get-FileHash .\Clash.Verge_2.5.2_x64-setup.exe -Algorithm SHA256
第二样是数字签名,签过名的会显示证书主体,没签过的状态是 NotSigned。
Get-AuthenticodeSignature .\Clash.Verge_2.5.2_x64-setup.exe | Format-List Status, SignerCertificate
还有一种情况和 SmartScreen 无关,容易被混在一起。系统提示「此应用无法在你的电脑上运行」,Clash Verge Rev 的官方 FAQ 把它归到下载错文件上,原话是 99.99% 因为你下载错了文件,绝大多数人要的是 x64 那个包,不是 arm64。
至于下载的压缩包解压出来运行不了,Windows 会给文件打一个来自互联网的标记。PowerShell 的 Unblock-File 命令用来去掉它,微软的文档说明它去掉的是那条值为 3 的 Zone.Identifier 备用数据流,效果和在文件属性对话框里点解除锁定一样。同一份文档在命令说明里写了一句提醒,用它之前先审查文件和它的来源,确认打开是安全的。
Unblock-File -Path .\下载的文件名
微软在应用和浏览器控制里还有一项单独的开关,叫可能不需要的应用阻止。它管的是捆绑推广类软件,可以选阻止应用、阻止下载或者两者都阻止,其中阻止下载那一项只在 Edge 浏览器里生效。
macOS 的两种弹窗,一种能放行一种不能
苹果的支持文档把这两种分得很开,读的时候先看措辞。
第一种说「无法验证 App 开发者」,或者说 Apple 无法检查某个 App 是不是包含恶意软件。文档解释这是因为在 macOS Catalina 及更高版本中,该 App 尚未经过 Apple 公证。公证是开发者把软件提交给苹果做自动扫描的流程,没提交过就会显示这一条。从 GitHub Releases 下载的开源客户端基本都属于这一类。
放行的步骤是官方给的,打开系统设置,点按隐私与安全性,向下滚动,点按仍要打开按钮,确认你要打开或安装这个 App,警告提示再次出现时点按打开。之后这个 App 就被记成例外,以后不再拦。
第二种说这个 App 将损坏你的电脑。苹果的文档说明系统在这里检测到了已知恶意软件,Mac 会通知你相应 App 无法打开,并把它移至废纸篓。这一种没有仍要打开的选项,也不要去搜绕过的办法。
下载完可以先核一下哈希,终端里执行这一行,输出和 Releases 页面上的校验值对一下。
shasum -a 256 ~/Downloads/Clash.Verge_2.5.2_aarch64.dmg
装完还有一个常见问题和安全机制无关。Clash Verge Rev 的 macOS 常见问题里记了一条软件包损坏,原因是在旧版还运行着的时候直接装了新版,结果两份都坏了。升级前先在菜单栏图标上点退出,确认完全关闭再覆盖。
安卓要分清三样东西
安卓上的提示来自三套不同的机制,经常被当成一件事。
安装未知应用的权限。 从浏览器或者文件管理器打开 APK 时,系统会说不允许从此来源安装应用,并提供一个跳转到设置的入口。这个权限是按来源应用单独授予的,给浏览器开了,换用文件管理器装还要再开一次。装完之后可以回去把它关掉。
Google Play 保护机制。 这是扫描,和上面那个权限是两码事。Google 的帮助页写明它在你从 Play 商店下载应用之前先做安全检查,安装时再检查一遍,还会定期扫描设备,并且会检查设备上是否存在来自其他来源的可能有害的应用。它默认开启,位置在 Play 商店右上角头像里的 Play 保护机制。从官方 Releases 装代理客户端时,它有时会提示这个应用未经 Play 认证,这句话说的是分发渠道,不是检出了恶意代码。
受限制的设置。 Android 13 之后出现的一层。Google 的帮助页说明某些设备设置可能会受到限制,防止有害应用要求你更改设置让设备或数据面临风险,解除的路径是设置、应用、选中那个应用、点按允许受限制的设置。代理客户端一般用不到这一层,有 App 坚持让你开某个开关又说不出理由,先停下来。
装不上还有个高频原因和权限无关。安装包架构错了,或者没下完整,系统会报解析错误或者应用未安装。近几年的安卓手机都是 64 位 ARM,要文件名里带 arm64-v8a 的那个。FlClash v0.8.98 的 arm64-v8a 包是 53.8 MB,下下来的文件明显小于这个数就是没下完。更多安卓客户端的安装步骤在 Android 客户端对比里。
这几种情况不要放行
- macOS 提示将损坏你的电脑。
- 安装包来自网盘、论坛附件、第三方下载站,或者名字里带汉化、绿色、破解、去广告。
- 自己算出来的哈希和官方页面上的校验值对不上。
- 安装过程要求先关掉杀毒软件才能继续。
- 装完之后向你要无障碍服务、设备管理员或者读取短信这类和代理无关的权限。
- 这个客户端的官方仓库已经删除或者归档,现在网上流传的安装包没有来源可查。
iPhone 上不弹这些,坑在别处
App Store 上架的应用都经过苹果审核,装的时候不会出现上面这些警告。iPhone 上要提防的东西换了一个,是 Apple ID。
Shadowrocket、Stash、Quantumult X 这几个都不在中国大陆区 App Store 上架,要用其他地区的 Apple ID 才买得到。网上有人卖所谓共享 Apple ID,登录之后能下到这些应用。别用。那种账号一旦拿去登录 iCloud,对方就掌握了你这台手机的数据和锁机权限。几个 iOS 客户端的价格和区别写在 iPhone 上的客户端怎么选里,自己注册一个外区账号并不麻烦。