这篇文章原题为《Ubuntu下安装flash player》,发布于 2014 年。它不再是一篇安装教程:Adobe 已于 2020 年 12 月 31 日终止 Flash Player 支持,并从 2021 年 1 月 12 日起阻止其运行 Flash 内容。Adobe 不再提供旧版下载,明确建议卸载播放器,并警告第三方“Flash 下载”常是恶意软件来源。
Firefox 85 已移除 Flash 支持,也没有重新启用的设置。把 libflashplayer.so 复制进当前浏览器配置既不能恢复受支持的 Flash,也会重新引入一个没有安全补丁的旧运行时。本文的当前目标是:安全退役插件,并在权利明确的前提下,把自有或获授权的历史内容迁移到现代格式。
文末保留 2014 年完整原文的惰性归档,其中的安装命令仅是历史证据,绝不能执行。
Table of Contents
先决定任务是退役、迁移还是保存
| 真实需求 | 合理目标 | 不应做的事 |
|---|---|---|
| 普通 Ubuntu 工作站上仍残留插件 | 清点、隔离并通过受支持的软件管理流程移除 | 安装旧浏览器或从镜像站下载 Flash |
| 你拥有 FLA、源代码和媒体母版 | 从源项目生成 HTML、Canvas、视频或新的应用 | 把编译后的 SWF 当作完整源代码 |
| 你获授权展示某个 SWF,但暂时无法重写 | 在隔离预发布环境评估当前 Ruffle,再制定迁移期限 | 建立公共任意上传播放器或宣称完全兼容 |
| 只有受保护、带 DRM、登录或停运服务器依赖的文件 | 停止,向权利人取得许可、源文件和接口资料 | 绕过保护、伪造服务器、破解授权或提取受限资产 |
| 研究机构必须保留原始行为 | 由数字保存/安全团队在封闭、一次性环境中取证 | 在日常联网桌面恢复 NPAPI Flash |
拥有文件副本不自动等于拥有公开传播、修改或绕过访问控制的权利。先记录权利人、许可范围、允许的受众和保存依据;不明确时只做哈希与元数据清点,不运行内容。
做不执行内容的证据清单
在授权的本地副本上先找源项目和交付物。下面的命令只列文件,不打开 SWF;legacy-site 是占位目录:
find legacy-site -type f -iname '*.fla' -print
find legacy-site -type f -iname '*.swf' -print
find legacy-site -type f -iname '*.flv' -print
find legacy-site -type f -iname '*.as' -print
文件名本身可能含客户、课程或内部项目名称,分享清单前脱敏。对批准的单个样本记录哈希、类型与元数据;以下是 Ubuntu/GNU 示例:
sha256sum -- legacy-site/example.swf
file -- legacy-site/example.swf
stat -- legacy-site/example.swf
不要把未知 SWF 双击打开,也不要上传到在线“转换器”。至少建立以下证据表:
| 项目 | 要记录的证据 |
|---|---|
| 权利 | 所有者、许可证、传播范围、访问控制与到期日 |
| 源资产 | FLA、ActionScript、图片、字体、音频、视频、构建说明与版本 |
| 运行依赖 | ActionScript 版本、外部 URL、后端接口、共享对象、摄像头/麦克风需求 |
| 当前行为 | 关键场景、输入输出、尺寸、帧率、音画同步、保存与错误状态 |
| 数据风险 | 用户标识、凭据、遥测、上传、第三方域名与保留期限 |
源目录应只读备份;在副本上工作,并为每次转换保留工具版本、输入哈希和输出哈希。
在 Ubuntu 上安全退役旧插件
现代 Firefox 已没有重新启用 Flash 的开关。先用只读命令查看可能的包与用户插件目录,不要假设旧文章中的路径一定存在:
apt list --installed 2>/dev/null | grep -Ei 'flash|pepper'
find "$HOME/.mozilla/plugins" -maxdepth 1 -type f -print
包名因 Ubuntu 版本和历史安装方式而异。对软件包管理器找到的精确包名,先查看模拟移除计划:
apt remove --simulate exact-package-name
exact-package-name 必须替换为刚才确认的单个包;不要使用通配符,不要复制别人系统的包名,也不要在未审查依赖变化时执行真实移除。实际变更应走当前 Ubuntu 的受支持管理流程,并保留事务日志与回滚方案。
如果证据明确表明旧文章曾手工复制唯一的用户级文件,可先做可逆隔离,而不是删除整个配置目录:
plugin="$HOME/.mozilla/plugins/libflashplayer.so"
test -f "$plugin" || exit 1
test ! -L "$plugin" || exit 1
quarantine=$(mktemp -d "$HOME/flash-retirement.XXXXXX")
mv -i -- "$plugin" "$quarantine"/
printf '%s' "$quarantine"
这段命令只移动核对过的精确文件,并打印隔离位置;它不处理系统软件包。验收现代浏览器、清点快照和业务替代方案后,再按批准的保留策略处理隔离副本。不要把它放回浏览器,也不要用旧浏览器验证“是否还能运行”。
同时移除来源不明的 Flash 浏览器扩展,更新到受支持的 Ubuntu 与浏览器,并检查启动器、容器、旧用户配置和企业镜像。停止条件包括:路径是符号链接、文件所有者异常、包管理器计划移除无关软件、仍有业务声称依赖插件,或没有可恢复备份。
优先从源项目迁移
Adobe 说明 SWF 是已渲染的压缩交付格式,许多源数据无法重新导入;因此优先找 FLA 与原始素材,不要依赖反编译。标记为“Protect from Import”的内容更是明确停止条件,本文不提供绕过方法。
| 内容形态 | 优先迁移路径 | 验收重点 |
|---|---|---|
| 时间轴动画,有 FLA/素材 | 在受支持工具中复制到 HTML5 Canvas 或重新制作 SVG/CSS 动画 | 画面、时间轴、字体、缩放、降级内容 |
| 线性视频或音频 | 从授权母版转成浏览器支持的媒体,并保留高质量母版 | 音画同步、字幕、文字稿、码率与色彩 |
| 表单、课程或信息应用 | 用语义化 HTML、CSS 和 JavaScript 重建 | 键盘操作、焦点、屏幕阅读器、错误恢复 |
| 游戏或复杂 ActionScript | 从源代码移植到现代 Web 或受支持引擎 | 输入、存档、物理、网络、性能和确定性 |
| 只有 SWF | 先评估权利与保存价值;仿真只是过渡 | 功能缺口、外部依赖、真实性与退役日期 |
Adobe Animate 的自动 HTML5 Canvas 转换会注释 ActionScript,并可能移除视频、3D 变换或其他不受支持功能;“转换成功”不等于语义等价。必须逐场景测试并人工重写交互。
Ruffle 只能是有边界的过渡层
Ruffle 是开源 Flash 模拟器,不是 Adobe Flash Player,也不是访问控制或 DRM 绕过工具。其官方兼容性页面持续显示 ActionScript 1/2 与 3 的语言和 API 仍有缺口;百分比会变化,不能当作单个作品的验收结果。
只有同时满足以下条件时才评估 Ruffle:
- 你拥有内容或有明确的运行与发布授权。
- 文件哈希固定,来源可信,未要求绕过导入保护、许可证或身份验证。
- 在隔离预发布域使用官方项目的固定稳定版本,记录来源、版本和校验值。
- 默认阻断不必要的外部网络、页面脚本桥接、摄像头、麦克风、剪贴板和本地文件访问。
- 不接受公众上传 SWF,不把不可信内容与登录态、管理后台或敏感域放在同一来源。
- 有迁移负责人、兼容性测试、监控、回滚和明确的移除日期。
即使项目使用 Rust 与 WebAssembly,也不能据此把任意 SWF 视为可信。模拟器、浏览器、GPU 驱动和作品自身代码都仍是攻击面;保持依赖更新,并把新版本当作需要重新验收的变更。
必须保存原始行为时的隔离边界
若有合法保存任务且现代迁移无法还原关键行为,应由安全/保存团队审批一次性实验环境。旧 Flash 运行时不得回到普通工作站或可访问互联网的浏览器。
最低边界包括:无网络、无共享剪贴板、无共享主机目录、非管理员账户、只读输入副本、干净快照、限定输出通道、执行日志和任务后销毁。SWF 试图访问外部域、登录、支付、摄像头、麦克风、本地文件或未知原生扩展时立即停止。不要伪造授权服务器,也不要通过代理绕过地理、账户或订阅限制。
隔离降低暴露面,但不会让未修补运行时变安全。若关键行为依赖停运服务器,应保存协议文档、截图、录像和日志等证据,而不是重新连接未知基础设施。
发布现代替代版本
线性媒体应使用原始授权母版,不从受保护 SWF 偷取素材。一个最小 HTML 视频结构可以是:
<video controls preload="metadata" poster="poster.webp">
<source src="feature.webm" type="video/webm">
<source src="feature.mp4" type="video/mp4">
<track kind="captions" src="captions-en.vtt" srclang="en" label="English">
<p>Download the authorized video from the publisher's archive.</p>
</video>
提供经人工校对的字幕与文字稿、键盘可用控件、暂停动画方式、清楚的语言与版权信息。Canvas 动画还需要 DOM 中的等价文本和语义化控件;不要把所有交互封在不可访问的画布内。
发布前移除旧 <object>/<embed> 入口和诱导安装 Flash 的文案,保留清楚的迁移说明与联系渠道。默认不采集点击、设备指纹或观看历史;若确有分析需求,先定义目的、最小字段、同意与保留期限,不把旧 Flash 参数无审查地搬到新页面。
验证、切换与回滚
| 检查面 | 通过条件 |
|---|---|
| 权利 | 输入、字体、音乐、视频、代码和公开范围均有记录 |
| 安全 | 无 Flash 插件、无旧浏览器要求、无任意上传、外部请求在允许列表内 |
| 功能 | 关键场景、输入、音画、保存、错误与离线降级符合基线 |
| 可访问性 | 键盘、焦点、字幕、文字稿、替代文本与减弱动画均验收 |
| 隐私 | 不携带旧凭据/标识;数据最小化、同意和删除路径明确 |
| 运维 | 版本固定、构建可复现、监控、负责人、回滚和退役日期齐全 |
先在不带真实用户数据的预发布环境上线。保留旧页面的只读证据和新版本的可回滚发布物,但不保留可公开调用的旧播放器。切换后监控错误和外部请求;若出现越权访问、内容差异、安全告警或辅助功能退化,回滚到安全的“内容暂不可用”页面,而不是恢复 Flash。
停止条件
- 权利人、许可证、受众或修改权限不明确。
- 任务要求移除导入保护、绕过 DRM/登录/付费墙或恢复他人的停运服务。
- 只能从第三方站点取得 Flash Player、旧浏览器或不明转换器。
- SWF 来源未知、哈希变化,或请求不必要的网络、设备和本地权限。
- 只有 SWF 却宣称可以完整恢复 FLA、源代码或原始素材。
- 没有隔离环境、回滚、负责人、验收基线或现代化期限。
这些情况应暂停并升级给权利、安全、保存或无障碍负责人。安全的失败状态是说明内容暂不可用并提供合法联系途径,不是降低浏览器安全性。
参考资料
- Adobe:Flash Player 生命周期终止说明
- Mozilla:Firefox 终止 Flash 支持
- Microsoft:Flash Player 支持终止与浏览器移除
- Adobe Animate:创建与迁移 HTML5 Canvas 文档
- Adobe Animate:SWF 是渲染格式及重新导入限制
- MDN:HTML `<video>` 与无障碍要求
- Ruffle 官方项目
- Ruffle 官方兼容性状态
历史原文归档
以下是 source_export 中 2014 年可见正文的完整惰性归档。原文没有行尾空白,也没有需要脱敏的隐私、凭据、推荐或跟踪参数,因此未作替换。围栏内的安装包名、解压和插件复制命令均已过时,只是历史证据,绝不能执行。
去官网下载对应的flash软件包,我下的是install_flash_player_11_linux.x86_64.tar.gz,放在桌面的。
安装用命令(文件名和地址你对应自己的做修改):
tar xvf Desktop/install_flash_player_11_linux.x86_64.tar.gz
此时Mozilla Firefox尚不能使用flash,执行以下命令:
cp libflashplayer.so ~/.mozilla/plugins
Enjoy it!
