三款产品都自称 Chrome VPN,但其中只有一款是 vpnProvider 文档所描述的东西。该 API 仅在 ChromeOS 上提供,扩展在那里可以自行实现 VPN 连接的客户端一侧,而不必与已安装的客户端通信。浏览器代理扩展改变的是 Chrome 把请求发往何处。驱动独立桌面客户端的扩展,则是浏览器之外运行软件的控制面板。弄清你面对的是这三者中的哪一个,就能回答人们在这个比较中提出的大部分问题。

平台说明是第一道过滤

vpnProvider 官方参考在正文中写明了可用性限制,其中提到的权限属于该约定。在 Windows 上把 vpnProvider 加进 manifest 并不会创建这个接口。

先读平台那一行,再看权限列表,因为权限只有在 API 存在的地方才有意义。

代理扩展:浏览器就是边界

代理扩展使用浏览器的代理设置,让 Chrome 的请求经由服务器发出。它跨平台可用,也坦诚地界定了自己的范围。其他应用仍保持各自的连接,部分浏览器流量也可能仍不遵循配置的线路。那是浏览器层面的改动,不是系统隧道。

如果需求是「就这一个网站,就这一个浏览器」,那它就是合适的工具。

扩展加配套应用:隧道归应用所有

桌面 VPN 客户端通常安装一个服务和一个虚拟适配器,它的扩展只是一个调用该应用的遥控器。隧道存在于操作系统层面,所以它能覆盖浏览器永远看不到的应用。扩展的权限描述的是控制通道,而不是加密。移除扩展,隧道依然完好;移除应用,扩展就会失效。

这种不对称是最快的检验。停用扩展,看看其他应用是否仍在使用 VPN。

ChromeOS 提供方:由扩展实现客户端

在 ChromeOS 上,提供方模式在性质上不同。扩展接收配置消息与平台消息,创建配置对象,把连接状态回报给平台,并通过 API 提供流量,而不是经由单独安装的客户端。这更接近于自己写一个 VPN 客户端,而不是配置一个。该 API 还假定你已经在运行某个端点,因此它本身并不提供服务。

这正是参考文档谈的是实现客户端、而不是连接客户端的原因。

拿产品声明对照这三者来读

先问支持哪些操作系统,再问连接归哪个组件所有。如果答案是浏览器代理,那就只有浏览器范围。如果答案是配套应用,那就在该应用运行时具备系统范围。如果答案是 ChromeOS 提供方,那就只在 ChromeOS 上工作,别无他处。一个只写「Chrome VPN」却不回答这两个问题的产品页,并没有告诉你它做什么。

也要把权限与宣传的用途对照检查。网站访问与代理控制是不同的授权,不会因为另一个平台的 API 恰好同名就变得合理。

它们都没有告诉你的

接口对谁在运营端点、记录了什么日志、服务在你所在地区是否可用只字不提。那些是提供方的属性,不是 API 的属性。存在隧道并不等于就该信任它,存在某个权限也不等于你的平台上真有这个能力。把这两个判断分开。

然后在你实际使用的设备上、用一个不是浏览器的应用去检验这个说法。

相关文章