Chrome、FireFox、Edge等最新版浏览器 中继续使用Flash Player方案

一、背景

最近大连车务段在其公众号发表了题为《全力攻关一昼夜,确保运输三十站》的文章,迅速在网络上引发了群嘲,面对舆论压力只好自行删除了此文。起因是其现在车子系统在浏览器中运行的网页代码依赖Flash Player控件的运行,而其开发商Adobe公司呢,完全没考虑商用业务系统的风险做了一个骚操作,在32后的版本中加入了“定时炸弹”,从2021年1月12日(美国时间)开始禁止Flash内容在Flash Player中运行,而Flash Player在Windows 8及以上版本的操作系统中一直是内置自动更新的,从而引发了现在车子系统的故障。按理说你Adobe公司不再维护Flash Player也就罢了,用户继续使用引发的风险自己承担,也没人会来追究你的责任,非要整这么一个定时炸弹在软件中,这和植入了木马病毒又有啥差别呢?可能很多人在说,3年前Adobe公司就公告了这个时间点会停止更新和分发Flash Player,相信大家也绝不会想到Adobe公司会植入这个定时炸弹。而大连车务段遇到的问题绝不是孤例,只是并非所有单位都在公众号发个表扬稿罢了。

Flash Player从1996年诞生开始,逐步成为一种广泛使用的多媒体程序播放器,因为Adobe大力推广其Flex作为RIA(因特网应用程序)的框架,第三方因此开发创造出众多丰富型互联网应用程序,最典型的如曾经火热一时的网页游戏,进一步丰富了Flash Player的使用场景。有数据统计,Flash Player曾经达到13亿台电脑安装使用,装机率超过90%。正因为如此,在数年前开发的各种业务系统,包括企事业单位的网站,或多或少也都依赖它才能正常运行。

然而互联网技术的更新换代一直是非常快的,因为Adobe一系列失误导致Flash Player错失了在移动平台的发展良机,漏洞太多加上HTML5、WebGL、WebAssembly等技术的不断成熟,当前主流的Chrome、Edge等浏览器于2021年1月22日左右发布的88版也纷纷对Flash Player痛下杀手,取消了其PPAPI插件的运行支持,微软也来补刀推出可选更新 KB4577586直接卸载原系统集成的Flash Player版本。对于那些依赖Flash Player的网站和业务系统,如何保证继续正常运行成为了难题。

二、现有方案

虽然3年前 Adobe就建议开发者将Flash内容及程序移植到 HTML5、WebGL 以及 WebAssembly,但客观现实是当初开发Flash相关内容和程序的公司可能都已经倒闭了,或者因为迁移成本过大、或者体制原因无法立项缺乏经费、或者对新技术储备不足等迟迟未做改造,比如咱们的CCTV官网就还有很多视频还需要Flash Player来播放,所以只能从浏览器端想办法了。而想要在浏览器中继续正常使用Flash Player,目前有以下几个可选的方案:

1、 回退旧版本方案

这也是大连车务段采用的保守方案,卸载有时间炸弹逻辑的版本,将Flash Player回退到29版(无锁区及广告骚扰问题)使用,此方案虽然可用了,但不可避免的因为使用的是旧版本,其中存在已曝光的漏洞还是存在很大安全风险的,另外也只能在Chrome、Edge等浏览器87及以下版本及IE浏览器中加载使用。

2、 特有浏览器方案

此方案也就是国产浏览器方案了,如360极速及QQ浏览器等,这些浏览器一般都是双内核,其中的Chromium内核版本一般都比较低,所以还可以继续加载Flash Player来使用,啥时候这些国产浏览器升级内核到88及以上版本,就彻底不支持了。典型的如4399网页游戏网站,也是推荐用户用国产浏览器搭配Flash Player中国区版(解除了时间炸弹但会收集你上网习惯来针对性弹广告)来使用(当然也可以回退版本,不过对小白个人用户来说是不知道如何操作的)。另外Adobe官方对企业用户想要继续使用Flash Player的解决方案说明:Update for Enterprise Customers Using Adobe Flash Player,推荐的第三方合作方叫HARMAN,据了解给出的方案就是提供一个内置了Flash Player的浏览器,一年五万刀费用,其实也是专有浏览器方案,不能在主流的Chrome、Edge、Firefox等浏览器中使用。

3、 替代技术方案

在Github上有个开源的项目,https://github.com/ruffle-rs/ruffle,是一个用 Rust 语言开发的 Adobe Flash Player 模拟器,通过WASM技术实现在网页播放支持。但Ruffle并非完美无缺,当前它并不能保证完美兼容所有的Flash组件,有时候会遇到出错的情况,另外虽然作为浏览器的扩展可在Chrome等浏览器中调用,不过并未上架浏览器官方商店,只能手工部署安装,对商业用户来说并不友好。由于不是原生官方支持的,其兼容性、稳定性及播放性能都可能存在问题,后续能否长期更新维护也是未知数。

三、改进方案

从现有方案可以看出,想要完美解决问题,需要同时解决时间炸弹问题(32.0.0.371后的版本加入了时间炸弹的问题)、浏览器全兼容运行问题(Chrome、Edge等88版移除了Flash Player运行支持),在中国大陆地区出的特供版虽然无时间炸弹问题,但因为其收集电脑上网信息并针对性弹出广告,广大用户早就怨声载道,自然也不能用在商业环境中。而国际版从30.0.0.113开始的版本就加入了锁区运行限制,就是国际版正常不能在中国大陆地区的电脑上正常运行。所以对最新的国际版通过修改其控件特定位置的字节码从而解除其在锁区问题及时间炸弹问题。而想要兼容Chrome、Edge等88版及以后更高版浏览器的运行,目前全网上都还没有一个成熟的解决方案。通过网络搜索发现有PluginOK中间件(https://codechina.csdn.net/zorrosoft/pluginok)这样一个跨浏览器的原生小程序系统,通过简单摸索和测试验证,证明完全可以用来解决此问题。借助PluginOK中间件,有两种办法可以让Flash Player继续运行在Chrome、Edge等最新版浏览器中:

1、 PluginOK中间件搭配IE控件小程序(https://codechina.csdn.net/zorrosoft/pluginok/-/blob/master/Bin/IEApplet.txt),让Chrome、Edge、Firefox等浏览器变成双内核方案,而且还可以指定IE内核运行的版本,这种方案尤其适合那些以前只兼容IE低版本浏览器的网站,只需要对网站做简单改造,通过JS脚本连接Web Socket侦听端口,然后通过JSON组包发送命令即可,前端还可以与IE控件小程序互操作。此方案由于借助了IE内核,内存占用会高一些,可能会遇到IE网页加载ActiveX控件警告问题。

2、 PluginOK中间件搭配Flash Player网页播放小程序(https://codechina.csdn.net/zorrosoft/pluginok/-/blob/master/Bin/FlashPlayerApplet.txt),此方案完全甩开IE内核来加载Flash Player的ActiveX控件,运行性能比第一种方案好,内存占用低、体验也更好,不过网站改造这块更多一些,不过是一劳永逸的解决办法,如果是新项目要兼容Flash Player的运行,建议用此方案。

针对以上两个方案,也有体验版程序包可以下载:http://zorrosoft.com/Files/PluginOKFlash.zip,需要的朋友可以试试,如遇到问题,程序包中也有联系方式可以咨询。

欢迎加微信交流18051018685

这里虽然解决的是Adobe Flash Player的问题,微软的Silverlight也将在2021年10月12日到达支持结束,当初Silverlight可是和Adobe Flex同台竞技的火热程序框架,使用了Silverlight的各种业务系统也非常多,而且只支持IE浏览器。借助PluginOK中间件,还可以将使用了Silverlight的业务系统兼容到Chrome等浏览器运行,也是一箭双雕了。

四、总结

一个好的技术实施方案,首先是要满足客户的刚性需求,其次是尽量降低开发、实施及运营的总成本,再次是是良好的兼容性和稳定性,最后需尽量确保技术方案不能因为浏览器的升级而失效。本文基于当前最新的技术信息和实践经验,提供了这样一个稳定可靠、兼容性好的低成本半开源技术方案,以供大家选型参考。

原文地址:https://www.cnblogs.com/linwei123/p/14326527.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


  译序:JWMediaPlayer是开源的网页使用的Flash播放器。本文采摘于JWPlayer的官方文档,讲解了JWPlayer对于RTMP的使用方法,我们可以从JWPlayer客户端的角度来了解RTMP协议。以下是官方原文:      简介    RTMP(RealTimeMessagingProtocol
    Flash编程原理都是只能将1写为0,而不能将0写成1.所以在Flash编程之前,必须将对应的块擦除,而擦除的过程就是将所有位都写为1的过程,块内的所有字节变为0xFF.因此可以说,编程是将相应位写0的过程,而擦除是将相应位写1的过程,两者的执行过程完全相反.一、Nor和NandFlash
 上传setenvgatewayip192.168.1.1;setenvserverip192.168.1.7;setenvipaddr192.168.1.156;mw.b0x820000000xff0x1000000sfprobe0sfread0x8200000000x1000000tftp0x82000000test.bin0x1000000 下载mw.b82000000ff1000000tftp82000000test.bi
Error:FlashDownloadFailed-"Cortex-M3"出现一般有两种情况:1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/HWreset/sysresetReq/Vectreset)默认是AutoDetect,改成SysResetReq即可。2.Jtag模式下,主要是芯片大小选错。Flash->ConfigureFalshTools配置窗口,切换到“Utilities"
jPlayer是一个用于控制和播放mp3文件的jQuery插件。它在后台使用Flash来播放mp3文件,前台播放器外观完全可以使用XHML/CSS自定义。支持:有一点比较好的是,在支持html5的浏览器上会使用html5的标签audio或者video,而不支持的浏览器上使用swf来播放选择需要播放的Mp3文件。播放、暂停
#ifndef__FONTUPD_H__#define__FONTUPD_H__#include"sys.h" //字库信息结构体定义33字节__packedtypedefstruct{u8fontok;//字库存在标志,0XAA,字库正常;其他,字库不存在u32ugbkaddr;//unigbk的地址u32ugbksize;//unigbk的大小u32f12addr;//gbk12地址u32g
ROM(ReadOnlyMemory)和RAM(RandomAccessMemory)指的都是半导体存储器。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,但是访问速度快。典型的RAM就是计算机的内存。RAM有两大类,一种称为静态RAM(StaticRAM/SRAM),SRAM速度非常快,是目前读写最快的存储
JSpc端和移动端实现复制到剪贴板功能实现在网页上复制文本到剪切板,一般是使用JS+Flash结合的方法,网上有很多相关文章介绍。随着HTML5技术的发展,Flash已经在很多场合不适用了,甚至被屏蔽。本文介绍的一款JS插件,实现了纯JS方法复制文本到剪切板。插件名是Clipboard.js,该插件不依
例子:R0=1R1=1R2=10R3=e000ed10R12=0LR=fffffff9(中断返回值)PC=0PSR=60000013或60000016或60000036(Z、C、EXCEPT_NUM:RTC_WKUP_IRQn、EXTI0_IRQn、USART2_IRQn)BFAR=e000ed38(不关心)CFSR=20000(INVSTATE:Invalidstateusagefault thePCvaluestackedf
 内存接口概念首先来分析下操作GPIO控制器和操作UART控制器两者的区别如图是S3C2440是个片上系统,有GPIO控制器(接有GPIO管脚),有串口控制器(接有TXDRXD引脚)配置GPIO控制器相应的寄存器,即可让引脚输出高低电平;配置UART控制器相应的寄存器,即可让引脚输出波形。前者相对简单,类
小编导语:    近几年来,网页游戏成为了游戏界关注的焦点,由于其制作简单,成本低并且收益率较高,因此成为了众多游戏厂商追逐的对象,但是除了商家夸张的炒作宣传外,很少有页游佳作出现。然而,随着Unity3D游戏引擎的出现,网页游戏的3D化成了页游冲出重围的杀手锏,那么在flash网页游戏称
1.指定数组到特定的Flash单元#pragmalocation=0x000FFF00 __rootconstcharFlash_config[]={0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0
继续研究发现,计算机的固件真的很有趣。参考了一些重要的资料,比如http://donovan6000.blogspot.com/2013/06/insyde-bios-modding-advanced-and-power-tabs.html等,对于IDA的使用也了解了一些。最后,总结一下目前看来可行性的方案:0.基础知识储备,包括UEFIBIOS的概念,InsydeBIOS的
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>navigator对象<itle></head><body><buttononclick="checkFlash()">检测</button>
修改网上流传的flash-marker.js(function(global,factory){typeofexports==='object'&&typeofmodule!=='undefined'?module.exports=factory():typeofdefine==='function'&&define.amd?define(factory
shareObject本地缓存存储位置:win7系统用户到C:\Users\[你的用户名]\AppData\Roaming\Macromedia\FlashPlayer\#SharedObjects\XP或2003用户到:C:\DocumentsandSettings\用户名\ApplicationData\Macromedia\FlashPlayer\#SharedObjects\ ---------------------作者:iteye_
安装谷歌浏览器之后经常遇到Flash崩溃或者浏览器在浏览Flash内容时卡死的情况。在网上查找资料大多都认为应该是浏览器自带的Flash插件工作模式引起的问题,解决方法如下:首先在地址栏输入chrome://plugins/显示浏览器使用的插件。点击右上角的详细信息,可以看到Flash插件为进程外
之前一直使用的W25Q16spiflash都没问题,换了一款W25Q80后发现工作不正常,经过测试,初步定位到问题在于初始化SPI后是否将CS拉高。于是又去查看了一下原厂代码:发现原厂的代码初始化SPI接口时是专门拉高CS的。结论:网上很多代码初始化SPI接口时没有专门拉高CS,对某些型号可能确实
======================================================NANDFlash最小存储单元:写数据操作:通过对控制闸(ControlGate)施加高电压,然后允许源极(SOURCE)和汲极(RRAIN)间的N信道(N-Channel)流入电子,等到电流够强,电子获得足够能量时,便会越过浮置闸(FloatingGate)底下的二氧化硅层(S
安装CnarioPlayer3.8.1.156或其他版本时,有时会出现如下提示:Warning4154.AdobeFlashPlayer13...notcorrectlyinstalled:请前往AdobeFlash网站,并选择下图示的版本下载安装: