什麼是瀏覽器核心?Blink、Gecko 與 WebKit 有何不同?看看你的瀏覽器真正用的是哪一個,以及 user-agent 為何會說謊。
瀏覽器核心是瀏覽器內部的軟體,負責把頁面的 HTML、CSS 與 JavaScript 轉化為你所看見的像素以及你所體驗到的行為。如今,幾乎整個網路都由三大核心驅動:Blink(Chrome、Edge 以及大多數其他瀏覽器)、Gecko(Firefox)和 WebKit(Safari 以及 iOS 上的每一款瀏覽器)。你使用的是哪一個,決定了網站如何算繪、哪些功能可用,以及你有多容易被辨識,而那串聲稱要告訴你答案的 user-agent 字串,其實是可以偽造的。本文將解釋每種核心、它們之間的關聯,以及如何查出你真正使用的那一個。
什麼是瀏覽器核心?
瀏覽器核心,也稱為算繪引擎或排版引擎,是讀取網頁程式碼並將其在螢幕上排版的元件。當你開啟一個頁面時,核心會把 HTML 解析成文件樹,套用 CSS 來設定樣式與定位,再把結果繪製出來。它還會與一個獨立的 JavaScript 引擎並肩運作,由後者執行頁面的指令稿。
這兩個部分經常被混淆。以 Chrome 為例,Blink 是算繪引擎,V8 是 JavaScript 引擎,而 Chromium 則是把它們打包成一款瀏覽器的開源專案。Firefox 把 Gecko(算繪)與 SpiderMonkey(JavaScript)搭配在一起;Safari 則把 WebKit 與 JavaScriptCore 搭配在一起。當人們說「瀏覽器核心」時,通常指的是算繪引擎,因為它決定了頁面看起來的樣子。
Blink(Chrome、Edge 與大多數瀏覽器)
Blink 是 Google 的算繪引擎,使用範圍以極大的差距領先。它驅動著 Chrome、Microsoft Edge、Opera、Brave、Vivaldi,以及眾多其他基於 Chromium 的瀏覽器,合計佔據了桌面瀏覽的絕大多數,約莫四分之三的市場。
Blink 以快速的 JavaScript 效能(透過 V8)、迅速推出新功能,以及廣泛的網路平台支援著稱,這也是開發者往往首先針對它測試的原因。這種主導地位的代價是核心多樣性的下降:當一個核心掌控了大部分網路,它的怪癖和決策便事實上成了實質標準,無論正式規範是否認同。
Gecko(Firefox)
Gecko 是 Mozilla 的開源算繪引擎,由 Firefox 及其衍生瀏覽器使用。它的市佔率很小,大約只有個位數,但其角色卻舉足輕重:Gecko 是桌面端主要的、獨立於 Chromium 之外的核心,因此它讓網路得以不淪為單一核心的壟斷。
Gecko 強調網路標準與隱私,而 Mozilla 的「Quantum」大改造則讓它的效能與平行處理能力煥然一新。對開發者而言,在 Gecko 中測試是最可靠的方式,能揪出網站不慎變得依賴 Blink 特有行為的地方。
WebKit(Safari 與所有 iOS 瀏覽器)
WebKit 是 Apple 的核心,由更早的 KHTML 引擎發展而來。它驅動 macOS 與 iOS 上的 Safari,並針對 Apple 硬體最佳化,著重於電池續航與穩定性。在桌面端它的市佔率不大,但在行動端卻非常龐大,這要歸功於一條關鍵規則。
在 iOS 與 iPadOS 上,每一款瀏覽器都必須使用 WebKit,包括 iPhone 上的「Chrome」和「Firefox」。這些應用程式包裝的是 Apple 的 WebKit,而非搭載 Blink 或 Gecko,因此在 iPhone 上,無論你點開哪個瀏覽器圖示,跑的永遠是 WebKit。這正是為什麼同名的網站,在 iOS Chrome 上的算繪可能與 Android Chrome 不同。
Blink、Gecko 與 WebKit——比較
| 核心 | 開發者 | 大致市佔 | 驅動 | 著稱之處 |
|---|---|---|---|---|
| Blink | 約桌面端四分之三 | Chrome、Edge、Opera、Brave | 速度、快速推出功能、主導地位 | |
| Gecko | Mozilla | 個位數 | Firefox | 標準、隱私、核心獨立性 |
| WebKit | Apple | 桌面端小、行動端大 | Safari、所有 iOS 瀏覽器 | 電池續航、穩定性 |
實用的結論是:大多數「不同」的瀏覽器其實是同一個 Blink 核心套上不同的介面,而 Gecko 與 WebKit 才是僅存的兩個真正各具特色的替代方案。
一段簡史:KHTML → WebKit → Blink
這三種核心的關聯比看上去更深。WebKit 始於 2001 年,當時 Apple 從 KDE 專案的 KHTML 引擎分支出來,用以打造 Safari。多年來,WebKit 同時驅動著 Safari 與 Google 的 Chrome。接著在 2013 年,Google 從 WebKit 分支出 Blink,好讓自己能依照自身的方式演進這個核心。而 Gecko 則自始至終在 Mozilla(以及更早的 Netscape)獨立發展。
因此,Blink 與 WebKit 擁有共同的祖先,這正是它們有時行為相似的原因,而 Gecko 則來自一條獨立的血脈。
如何查出你的瀏覽器使用哪種核心
最快的方法,是執行 BrowserInsight 的瀏覽器核心檢測,它會偵測你的瀏覽器實際運行的算繪引擎,而不是輕信圖示上的名稱。這個區別很重要,因為 user-agent 字串——瀏覽器用來自我表明身分的那段文字——是輕而易舉就能編輯的。一個瀏覽器大可聲稱自己是 Windows 上的 Chrome,實際上卻完全是另一套東西。
這正是為什麼核心偵測會越過 user-agent,直接審視核心的真實行為:哪些網路 API 存在、某些功能是如何實作的,以及其他難以偽造的蛛絲馬跡。如果你想了解這道落差是如何被利用與偵測的,請參閱如何偵測 user-agent 偽裝;想更深入地探究某個核心特有的訊號,可參閱你的 GPU 如何透過 WebGL 暴露你的身分。
常見問題
Microsoft Edge 使用什麼瀏覽器核心?
Edge 使用 Blink,和 Chrome 是同一個核心。Microsoft 在 2020 年讓自家舊有的 EdgeHTML 引擎退役,並在 Chromium 上重建了 Edge,所以如今 Edge 與 Chrome 算繪頁面的方式幾乎一模一樣;差異在於介面與內建服務,而非核心。
iPhone 上的 Chrome 真的是 Chrome 嗎?
就核心意義而言並不是。在 iOS 上,Apple 要求每一款瀏覽器都使用 WebKit,所以 iPhone 上的「Chrome」和「Firefox」只是套在 Apple WebKit 引擎外的介面外皮。它們會同步你的資料、看起來也像桌面版應用程式,但真正負責算繪的是 WebKit,這也是頁面行為可能與 Android 上不同的原因。
瀏覽器核心和 JavaScript 引擎有什麼區別?
瀏覽器(算繪)核心把 HTML 與 CSS 排版成你所見的樣子;JavaScript 引擎則執行頁面的指令稿。兩者協同運作,卻是各自獨立的元件——Blink 搭配 V8,Gecko 搭配 SpiderMonkey,WebKit 搭配 JavaScriptCore。
我可以更換瀏覽器的核心嗎?
在一般瀏覽器內無法做到——核心是內建的。你唯一切實可行的選擇是更換瀏覽器:想要 Blink 就挑一款 Chromium 瀏覽器,想要 Gecko 就用 Firefox,想要 WebKit 就用 Safari。而在 iOS 上,這個選擇被徹底取消了,因為所有瀏覽器都使用 WebKit。
結語
三種核心——Blink、Gecko 與 WebKit——算繪了幾乎整個網路,而你挑選的瀏覽器,很大程度上就是在它們之間做選擇。Blink 佔據主導,Gecko 讓網路保持獨立,WebKit 則憑藉規定統治 iOS。知道自己實際運行的是哪種核心,對相容性與隱私都同樣重要,而且由於 user-agent 可能對它造成誤導,唯一可靠的辦法,是偵測核心的真實行為,而非輕信它的名稱。
推薦閱讀: