常见问题
作者:少数派sspai 日期:2021-03-05浏览:次
经过长达三年的过渡后,Adobe 终于在 2020 年的最后一天正式结束了对 Flash 技术的支持。此番 Adobe 还联合了多个浏览器开发商以及操作系统巨头,誓要从技术手段和使用环境上彻底让 Flash 从大家的世界里消失。
但和 Windows 7 一样,官方层面的「死刑宣告」并不意味着我们彻底不再需要使用。事实上,由于国内相对特殊的互联网环境,想要彻底和 Flash 技术说拜拜可能还真的「为时尚早」,作为一项曾经相当普及的多媒体技术,Flash 在一些尚未进行技术升级的政企网站、电视直播和企业内网业务培训等等页面中,都还有着相当高的出场率。
部分学校官网依旧在大量使用 Flash
考虑到接下来主流操作系统平台以及浏览器都会相对激进地限制 Flash 的使用,如何在这个「后 Flash 时代」继续使用这项「过时」的技术呢?
▍留在旧版/选择国内浏览器
没错,如果你不在意新系统、新特性和浏览器的安全性,选择支持 Flash 的旧版操作系统和浏览器自然可以解决上述问题。
操作系统这边,目前微软仅向 Windows 8.1 和 Windows 10 推送「删除 Flash 组件」更新,而已经停止支持的 Windows 7 并不在该更新的推送范围之内。
浏览器方面,只有采用 Chromium v88 以上版本(包含 v88)内核的浏览器不再支持 Flash,而只要低于该版本都可以继续「加载」Flash 组件。通过以上几个小「小后门」我们可以在一定程度上继续浏览 Flash 内容。
相比国外各大浏览器厂商都紧跟 Chromium 上游版本,目前国内的各大浏览器的 Chromium 版本还停留在 v80 之前。虽然从安全性以及新技术应用上稍显落后,但放在 Flash 支持上反而变成了一大优势。因此如果你主要用浏览器访问国内的网络服务,那么选择合适顺手的国产浏览器即可。
例如QQ浏览器的最新版本的 Chromium 版本还停留在 v70,在安装时会询问是否安装 Flash,并且经过我的测试勾选 Flash 后会安装的版本其实就是国产特供版的 Flash(虽然看签名依旧是 Adobe),但好处是并不会像独立安装特供版 Flash 那样植入广告组件(独立安装中国特供版 flash Player会被系统安全软件直接拦截)。
这个方案的优势是完全不用折腾,尤其是适合浏览器主要用来访问国内互联网服务的朋友,而且几乎不存在浏览器或者使用习惯上的适应调整。当然如果你主力浏览器使用的是 Edge 或者 Chrome 的话,这个方案实际上为系统多安装了一款浏览器,并引入了潜在的浏览器广告弹窗等一系列隐私问题,同时也不适用于 macOS 用户(仅限 Windows 系统)。
▍使用开源替代:Ruffle
在 Adobe 宣布结束 Flash 支持后不久,就有开发者发起了该技术的开源替代项目 Ruffle。
Ruffle 使用 Rust 编程语言构建,本质上就是一个 Flash Player 模拟器。它通过 WebAssembly 在浏览器上运行,运行时采用了浏览器扩展的形式——因此 Ruffle 也是运行在沙盒中的,相比此前需要安装更加底层的应用插件的做法,对浏览器以及操作系统的影响也更小。
目前 Ruffle 还处于不断开发的阶段,所以也尚未上架各大浏览器的扩展商城。使用安装的话需要在其 GitHub[1] 主页上下载当前的扩展编译包并采用手动加载的方式运行。
打开 Chrome 的扩展管理页面,勾选右上角的「开发者模式」后,点击「加载已解压的扩展程序」后选择此前已经完成解压的 Ruffle 扩展程序包,之后你就会在浏览器的扩展栏中找到 Ruffle 并启动了。
这时候你使用浏览器打开一个包含有 Flash 内容的网页,这时候当前网页中的所有的 Flash 元素都会变成一个播放按钮,点击播放就可以显示 Flash 内容了。只不过目前 Ruffle 对于基于早期 Flash 技术(Flash Player 9 之前)的内容支持较好,而对于较新的 Flash 技术的支持则刚刚起步,所以建议有旧版网站浏览需求的用户选择使用,如果你想看一些基于 Flash 的视频流,这里更加推荐本文介绍的其它方法。
▍自行编译、定制 Flash 功能
国内浏览器不太放心、Ruffle 似乎也不太够用……考虑到当前基于 Chromium 内核的国外浏览器大多支持自动升级,有没有什么办法可以让 Chromium 版本停留在 v88 之前然后调用 Flash Player 组件来实现 Flash 内容播放的办法呢?
其实是有的。我们完全可以通过第三方直接编译的 Chromium 浏览器手动加载 Flash Player 组件来实现,由于 Chromium 自己编译的版本并不可以自动升级,因此从理论上来说是可以长时间实现 Flash 的播放。
首先我们从 Chromium[2] 这个第三方编译 Chromium 网站上下载低于 v88 版本的浏览器,这里我直接下载 Archive 包(也可以在项目的 GitHub 主页[3] 中下载更低的版本)。
下载下来的 Archive 包 应该是一个 7z 压缩包,解压缩之后的文件夹应该是内含 Chrome-bin 文件夹,这里我们新建一个 ChromePortable 的文件夹,在这个文件夹中再新建一个名为 App 文件夹,将解压缩后的 Chrome-bin 文件夹全部拷贝到 App 文件夹中。
之后在 portableapps[4] 中下载绿色版 Chrome 启动器 Google Chrome Portable,将下载下来的安装包使用 7zip 解压缩后,将里面的 GoogleChromePortable.exe 复制出来并拷贝到前面新建的 ChromePortable 文件夹中。
接着,我们下载一个 Flash Player 修改版(32位[5] | 64位[6]),将对应系统架构(我这里是 x64)的 pepflashplayer64_32_0_0_371.dll 拷贝到 ChromePortable 文件夹中。
最后,为 GoogleChromePortable.exe 创建一个桌面快捷方式,快捷方式的「属性 > 目标」中再加入一段启动参数(起始部分有空格):
--ppapi-flash-path="C:toolchromeportablepepflashplayer64_32_0_0_371.dll" --ppapi-flash-version="32.0.0.371" --allow-outdated-plugins
其中 C:toolchromeportablepepflashplayer64_32_0_0_371.dll 对应的是刚才复制出来的 Flash 组件的绝对路径,这里根据你拷贝文件的具体位置修改即可。添加后点击「确定」完成修改。
这里直接在桌面双击新建的快捷方式,一个便携免安装的 Chromium 就已经启动成功了。使用时只需导航到含有 Flash 内容的网页,在地址栏中最左侧点击并打开网站设置,在网站设置中找到 Flash 项目并选择「允许」。
之后回到当前网页并根据提示重新加载,如果没有设置错误你就可以重新看到 Flash 内容了。
以上的这个办法虽然设置稍微麻烦,但好处是不用再安装新的浏览器(绿色便携版本),更加安全同时也对当前系统要求最小,也不会存在过时失效的问题。
但这个方法同样不支持 macOS。
▍借力 Windows 7 虚拟机
以上使用 Flash 办法都有一个局限:仅限 Windows 8.x/10。
事实上考虑到 Adobe 给 Flash 运行留下的「漏洞」:因为无法收到微软推送的删除 Flash 组件的补丁,Windows 7 这个刚刚结束支持并不久的系统可以无障碍运行 Flash Player系统层面上继续可以使用 IE 浏览器来浏览 Flash 内容。
因此使用虚拟机来运行 Windows 7,自然就可以继续浏览 Flash 内容了。这样无论是 Windows 还是 macOS 都可以借由虚拟机来运行这个专门用来浏览 Flash 内容的「大容器」。
实际上即便是到了今天,微软依旧在其 Microsoft Edge 开发者网站[7] 上提供了搭载 IE 以及经典 Edge 浏览器的系统镜像,并且都可以免费下载使用,而我们需要做的就是找到对应虚拟机软件的镜像,然后导入安装即可。
这里我选择的是 「IE11 on Win7(x86)」的 VMware,下载解压缩并导入之后根据提示安装辅助工具实现跨端浏览器,其他的操作其实和之前运行 Windows 并没啥区别。
另外,由于事实上这种方式和物理机存在隔离,因此我们也完全可以直接安装国产浏览器来实现 Flash 内容浏览……
值得一提的是,VMware 在 Windows 以及 macOS 上都支持 Unity 模式,这使得无需打开虚拟机桌面就可以直接通过菜单运行虚拟机中的应用,这在一定程度上可以让虚拟机和物理机在操作上更加无缝,尤其是在打开浏览器的时候更像是本机应用,更像是当年 Windows 7 推出时加入的 Windows XP mode。
虽然看上去使用虚拟机运行以及可以使用 Flash 插件的浏览器看上去有些「大材小用」,但却是唯一一个可以同时兼容 macOS 以及 Windows 的方案,当然这个方案会对硬件有所要求,毕竟虚拟机并不是单一的浏览器,占用的物理机的资源也会更高。
▍结语
作为一个过时的技术,Flash 的消亡也代表着 PC 互联网时代的最终落幕,虽然在国内的互联网环境中,这个名叫 Flash 的技术可能还会存在很长的时间,但最终这项闭源的、对系统资源不够友好的多媒体内容展示技术还是会被更开放、更透明也更安全的技术所取代。
所以我也希望前面所提到的这一系列方法,可以在未来某一天彻底失效。祝大家早日拥抱更加清爽、现代的网页浏览体验。