Google 瀏覽器禁止 Flash?少年,你不是當真了吧?

雷鋒網 於 28/07/2015 發表 收藏文章
【編者按】知乎上有不少人問:“如何評價Google瀏覽器禁止運行Flash?" 針對這個問題,本文作者羅志宇,混跡Opera瀏覽器十年的CTO,他從瀏覽器插件發展的歷史告訴你,這只是一個美麗的錯誤。

以下這種框,想必很多人都看到過了:


事情的起因還需要追溯到2013年,Google 突然發了一個通告,説是Chrome瀏覽器會逐步的去掉對NPAPI插件的支持。這個事情很快就過去了,因為NPAPI這種江湖黑話太不親民了,這個東西到底有啥卵用,廣大人民羣眾也並不清楚。關於Google公告,可以點擊這裏查看。

引用但是其實蠻重要,因為除了Java以外,大家喜聞樂見的Flash,也是NPAPI插件。


時間已經到了2015年,這次可不是説説而已了, Google 正式推出時間表:

引用2015年1月開始,除了非常流行的NPAPI插件,其他一律屏蔽;

2015年4月開始,所有的NPAPI插件默人都是關閉的,用户需要在高級設定中手動打開;

2015年9月,所有基於NPAPI的插件無法使用,不管你是 Java, 支付寶,或者是 Flash,或者百度雲。

其他瀏覽器廠商,比如Opera,火狐,也紛紛表態會逐漸淘汰NPAPI。


引用Opera:我早就説了啊


引用火狐:我還是會支持的,只是大家要一起來淘汰這個技術。

但是,NPAPI到底是什麼?

NPAPI全稱叫 Netscape plugin API, 聽到這個名字是不是有時光倒流的感覺, 沒錯,就是那個當年被微軟一棒子打死了好多年的 Netscape 瀏覽器發明的一種擴展瀏覽器的方式。

是不是覺得好拗口? 沒辦法,我們要從瀏覽器插件本身開始説起。

HTML 作為在瀏覽器裏面承載展現內容的規範, 設計起來其實非常困難。 太簡單沒法用,太複雜了瀏覽器廠商實現起來又有困難。 一開始的時候HTML只是設計用於承載圖片,文字一類的主流內容。不過瀏覽器廠商很快就不滿意了,因為除了圖片文字以外,很多小眾內容,瀏覽器用户實際上是有需求的。 比如,PDF文檔,以及視頻,音頻。

為了解決這些問題而去要求 W3C 把相應的內容加入到 HTML 標準裏面是很不現實的,標準的制定非常繁複,週期也非常長,小眾內容到底有沒有必要加入 HTML 規範,這種哲學問題一旦討論起來誰都不知道啥時候能結尾, 於是瀏覽器廠商們發明了插件這樣一個機制, 這樣如果有一些內容不被 HTML 直接支持,用户又確實有需要,那麼這部分內容就可以用插件來處理。

引用所以,插件本身對互聯網的發展,是有重大貢獻的, 沒有插件,很多新的內容,比如視頻,比如向量遊戲(Flash), 可能早就胎死腹中了。

W3C (萬維網)非常識相地很快就把插件機制正式納入到 HTML4 標準裏面。 W3C 畢竟不是一個強力部門,它更像各大瀏覽器廠商背後妥協的產物。

不過按照W3C的哲學,插件畢竟只是對 HTML 的一個補充。而一旦某些插件提供的內容由於市場原因反而變為主流,那麼 W3C 就會馬上將其納入到 HTML 規範中去,讓瀏覽器原生就支持。

<video> 標籤就是一個典型的例子。 2007 年的時候,鑑於 YouTube 已經火得一塌糊塗,網路視頻既然已經變成主流內容,W3C 馬上就開始討論是否引入 video 標籤,以便把視頻支持提高到瀏覽器原生這個水平。

這個提案是Opera提出來的, 我還記得Hakon Wellium Lee 在Opera 員工大會上面興致勃勃地討論這個標籤的場景。

這個提案現在還在這裏,大家有興趣可以看看這裏

看到這裏,插件在瀏覽器這個領域的作用已經不言而喻了。

引用瀏覽器承載的內容 = HTML (主流內容)+ 插件(小眾內容)

而W3C會時刻監視這個等式,動態調整HTML支持的內容以維持這個等式的動態平衡。

現在你知道為什麼HTML5會加入video、 audio標籤了吧。其實嚴格意義上講也包括 svg,canvas一類的標籤。

而NPAPI 就是瀏覽器插件架構的一種。事實上, NPAPI 插件架構是個非常好的架構, 一共就40幾個API, 相對於另外一種瀏覽器插件架構: ActiveX來説,簡直就是業界良心。

這裏只有一個問題,它的發明時間是1995,而在那個時候手機還可以砸死人,學校的電腦房要穿鞋套才能進。

那個時代所有類似的API(應用程序編程接口)設計者幾乎都非常自然的忽略掉了安全性問題。

你不信?我們來看看NPAPI插件和瀏覽器的關係是什麼, 同時對比下和同樣執行網絡下載代碼的Javascript引擎的位置。

看懂了吧, 你以為NPAPI是插件是嗎?其實它和瀏覽器是平級運行的,它甚至可以打開網頁,給你安一個木馬,然後隨手幫你關掉殺毒軟件。

引用可是,你説NPAPI不就40幾個API嘛? 少年,你想多了,NPAPI不限制插件自由訪問系統所有的API。

而 Javascript 引擎的限制就多得多,事實上,Chromium系列的瀏覽器 Javascript 引擎均是運行在沙盒之中,一舉一動都是被嚴密監視着的,敢有異常? 瀏覽器分分鐘殺死你。

除了安全性以外,插件們還質量參差不齊,一旦崩潰瀏覽器就得跟着一起崩掉, 於是各個瀏覽器又一把鼻涕一遍淚地把插件們放到另外一個進程中運行,既然惹不起難道還躲不起嘛。其他的耗電量,圖形效率,腳本效率一類的也差不多,這裏就不講了,講多了都是淚。

引用如果只是安全,那你把插件放到沙箱裏面隔離起來不就行了嗎?

是的,Google當年也是這樣想的,於是他們發明了 PPAPI, 然後在業界裏面振臂一呼,大家來看,我的這個新API好啊,插件用起來更安全,還有沙箱。

這個是業界夥伴們的態度:


引用Java説:我最近聽説Chrome不支持我們了,大家請換瀏覽器,就這樣。


引用火狐説:我們對PPAPI 一點興趣都木有。

(而且坑爹的是, Google 的PPAPI鏈接居然指的是Mozilla 的這個頁面。不知道是不是存心噁心Mozilla)。

如果你是個程序猿又有一顆好奇的心,表示無法理解PPAPI為何如此不受待見,你可以去這裏看看PPAPI的文檔 ,在這裏

你一定會發現問題,其實不管你是不是程序猿你都會發現問題。因為,這個PPAPI官方文檔鏈接裏面,幾乎木有文檔。

引用不過Adobe認慫了。 事實上Adobe很早就開始發佈PPAI的版本。


所以如果你這幾天再看到文章開始提到的對話框,如果上面寫的是Flash,你只需要去下載一個最新的ppai的flash 插件,或者下載一個新版的Chrome。

引用因為目前Chrome已經開始內置PPAPI版的Flash。其他的,就看廠商們如何跟進吧,據説支付寶已經有PPAPI版本了。

以上這些我用個簡單的故事方便理解:

引用如果把插件比喻各家請來的傭人,有一個叫Flash很能幹,不過所有的傭人開始都是穿比基尼上班,因為這是規定。但是Chromium覺得這個規定不好,説大家應該穿西服,結果遭到了很多傭人的抵制,他們覺得西服不方便。Chromium説不穿西服不準上班!於是Flash認慫換了西服,其他人集體辭職,就是這樣一個情況。Chromium不是對Flash這個傭人有問題,而是對穿着比基尼上班這個陋習有意見。

所以,少年,不要害怕,Flash還在的。

如果你看到的是這個框:


其實背後的原因還會更復雜一些。 這個是因為前期炒得沸沸揚揚的 Hacking team被黑的事件中,Hacking team hacked 的一些非常嚴重的Flash漏洞被泄漏出來了,於是Chrome把低版本的Flash全部禁止了。

解決的方法也一樣,下載一個最新的ppai的flash 插件,或者下載一個新版的 Chrome 就好。

以下是編者總結:

各大瀏覽器,比如chrome 禁止了NPAPI插件,但是依然有內置PPAPI版的Flash,本質原因是Google覺得以前的插件架構不合理。加上最近HT爆出的Flash嚴重漏洞,才會把低版本的Flash禁止了。而這與Flash本身沒有關係。

大家都知道,Flash插件有兩個功能,一個是視頻,一個是遊戲。最近HTML5的確很火,HTML現在代替視頻是沒有問題,但是遊戲不行。畢竟是新興市場,還達不到完全取代Flash的地步。所以,瀏覽器不是禁止Flash插件,只是出於安全考慮,對低版本的架構進行升級。
至於遊戲,無論什麼工具,只要適合項目需求的都是好工具,更何況 APP Store 從來沒有用開發工具作為遊戲分類的條件。因為玩家是不關心用什麼工具和語言開發,最關心的恰恰是遊戲體驗。這也讓Flash有一定的生存空間。

知乎上有不少人問:“如何評價Google瀏覽器禁止運行Flash?" 可以説,這只是一個美麗的錯誤。


資料來源:雷鋒網
作者/編輯:opera
標籤: Google  Flash  

留言


請按此登錄後留言。未成為會員? 立即註冊
    快捷鍵:←
    快捷鍵:→