輕量級 Google Analytics 替代方案
越來越多網站擁有者擔心「無所不見的 Google」在使用者瀏覽網路時追蹤他們。Google Analytics(GA)是一套功能完整的網站分析系統,可免費使用,儘管有隱私疑慮,它仍已成為大大小小網站事實上的標準分析工具。然而,近年來越來越多替代方案正協助打破 Google 的主導地位。本文將介紹其中兩款輕量級的開源選項,也就是 GoatCounter 與 Plausible。後續文章則會介紹幾款較大型的工具。
GA 無疑是此領域最大的玩家:BuiltWith 顯示,在排名前 10 萬的網站中,約有 86% 使用 GA。若擴大到前 100 萬名網站,這個比例則降至 64%。自 Google 收購 Urchin 並將其重新命名為 Google Analytics 以來,這些數字在過去 15 年間穩步成長。除了隱私疑慮外,GA 對部分網站擁有者而言也過於複雜、功能過多;他們很多人只是想知道自己網站各頁面有多少流量,以及這些流量從何而來。因此,過去幾年有不少更簡單、更開放的工具竄起,也就不足為奇了。
值得一提的是,LWN 目前仍有使用 GA,不過我們正在評估其他選擇。然而,若使用者在偏好設定中關閉廣告,就不會載入 GA 程式碼。
Google 追蹤了什麼,以及為何令人擔憂
如果問 Google 追蹤了哪些資訊,憤世嫉俗的人可能會說:「全部」。而問題就在於,這個說法離事實並不遠:Google 追蹤並儲存了大量關於使用者的資訊。
Douglas Schmidt 在 2018 年的一篇論文 [PDF]突顯了 Google 追蹤的廣泛程度,其中以 Android 裝置的位置追蹤為例:
Android 和 Chrome 即使在沒有任何使用者操作的情況下,也會向 Google 傳送資料。我們的實驗顯示,一支處於休眠、靜止狀態的 Android 手機(背景執行 Chrome)在 24 小時內向 Google 傳送了 340 次位置資訊,平均每小時傳送 14 次。
該論文區分了「主動」與「被動」追蹤。主動追蹤是指使用者直接使用或登入 Google 服務,例如執行搜尋、登入 Gmail 等。除了記錄使用者所有的搜尋關鍵字外,Google 也會在使用者造訪使用 GA 及其他 Google 發佈商工具的網站時,進行被動追蹤。Schmidt 發現,在一個「日常生活」情境範例中,「超過三分之二的資訊是 Google 透過被動方式蒐集或推斷而來
」。
Schmidt 的論文詳細說明了 GA 的 Cookie 追蹤如何運作,並指出「第一方」與「第三方」Cookie 的差異——後者會跨多個網站追蹤使用者及其廣告點擊:
雖然 GA 的 Cookie 僅屬於使用者造訪的網站網域(稱為「第一方 Cookie」),DoubleClick 的 Cookie 則通常與共通的第三方網域(例如 doubleclick.net)相關聯。Google 利用這類 Cookie 來跨多個第三方網站追蹤使用者互動。
當使用者與網站上的廣告互動時,DoubleClick 的轉換追蹤工具(例如 Floodlight)會在使用者電腦上放置 Cookie 並產生一組唯一的用戶端 ID。此後,若使用者造訪該廣告主的網站,儲存的 Cookie 資訊就會被 DoubleClick 伺服器讀取,從而將該次造訪記錄為一次有效的轉換。
由於有如此高比例的網站同時使用 Google 的廣告產品與 GA,這使得該公司得以掌握大量使用者在眾多網站上的瀏覽紀錄,無論是熱門網站還是規模較小的「夫妻店」網站皆然。簡言之,Google 對你的喜好、位置以及購買行為瞭若指掌。
Google 確實提供了關閉精準廣告、位置追蹤等功能的方法,也能刪除與帳號相關的個人化設定檔。然而,這些功能幾乎全都預設為關閉、需使用者主動開啟,大多數使用者要不是不知道這些設定,就是懶得去開啟。
當然,光是改用 GA 以外的工具並不能完全消除這些隱私問題(例如,這對於阻止 Android 位置追蹤或搜尋追蹤毫無幫助),但這是減少 Google 蒐集龐大資料量的一種方式。此外,對於使用 GA 替代方案的網站擁有者來說,Google 也就無法在幕後窺探該網站的流量模式——而這些資料未來有可能被用來打造競爭性工具。
LWN 的讀者可能本來就比較注重隱私:使用 Firefox 而非 Google Chrome、開啟廣告阻擋器等等。然而,他們所架設的網站的使用者,未必也同樣注重隱私。對網站開發者而言,選擇哪種分析工具,有助於尊重使用者隱私,避免讓 Google 對其使用者瀏覽行為掌握過多。
GoatCounter
GoatCounter 是較新的網站分析工具之一,於2019 年 8 月推出。由 Martin Tournoij 打造,它比起其他工具更帶有「單一開發者打造」的風格;外觀上稍微沒那麼精緻,但也因此對開發者更友善、設定更簡單。
該工具支援所有基本的分析功能:依網址區分的頁面瀏覽與造訪次數、瀏覽器與作業系統統計、裝置螢幕尺寸、地理位置以及參照來源資訊。預設情況下,GoatCounter 會顯示過去 7 天、以每小時為單位的統計數據,但網站擁有者可以透過簡單的控制項調整日期範圍。
GoatCounter 採用了特殊的定價模式,其原始碼以 copyleft 的歐盟公共授權條款(EUPL)釋出。企業可以自行架設代管,或付費使用 GoatCounter 的代管版本(不過代管版本對「個人」專案是免費的)。Tournoij 曾撰寫一篇長文說明他為何選擇 EUPL,其中提到:
我其實不太在意別人拿我的程式碼去做什麼,但在意的是自己的謀生能力是否會受到不合理的妨礙。如果有人拿走我以 MIT 授權釋出的程式碼,全職投入開發而不把改進回饋給我,那就等於我的競爭對手有了兩倍的人力在開發:我(對他們而言是免費的),加上他們自己。他們將永遠比我更有優勢。
GoatCounter 以 Go 撰寫,介面則使用原生的 JavaScript 來實現一些輕量的互動效果。JavaScript 框架常常會妨礙網路無障礙,而 GoatCounter 將無障礙列為優先事項(在其首頁上即有提及),這點讓「ctoth」深有感觸,他在 Hacker News 上致謝 Tournoij:
這是我第一次在這類主流產品的首頁上看到關於無障礙的說明。身為一名視障開發者,這真的很棒,讓我感覺到有人在傾聽。非常感謝你打造了這個產品。
除了計算頁面瀏覽次數外,GoatCounter 還會透過瀏覽器的 user agent 與 IP 位址的雜湊值來追蹤工作階段,以識別用戶端而不儲存任何個人資訊。用來產生這些雜湊值的 salt 每 4 小時會以滑動視窗的方式輪替。Tournoij 對工作階段追蹤的技術細節有詳細的說明,其中也比較了其他具有類似目標的解決方案。
對於偏好避免使用 JavaScript,或希望能統計停用 JavaScript 的使用者之分析資料的網站擁有者,GoatCounter 支援不使用 JavaScript 的追蹤方案。它在需要統計的頁面上使用一個 1x1 透明 GIF 圖片的「<img>」標籤來計數,不過這種方式不會記錄參照來源或螢幕尺寸。
GoatCounter 的代管版很容易設定——建立帳號並在網站上加入一行 JavaScript 大約只需五分鐘。分析資料在幾秒內就開始顯示。即使是代管版,網站擁有者也完全擁有自己的資料,可以隨時匯出完整資料或刪除帳號。
自行架設的版本也很容易設定,使用 Linux 執行檔或從原始碼自行編譯皆可——我從原始碼編譯並以預設的 SQLite 資料庫設定在本地架設,只花了不到十分鐘。相較於下文將討論的 Plausible,它的安裝輕量得多,沒有下載任何額外套件,而且幾乎是瞬間就啟動完成。
Plausible
Plausible 是另一款相對較新的分析工具,於 2019 年初推出。推出後不久,它便轉為開源,程式碼以寬鬆的 MIT 授權釋出。該公司的商業模式是對代管服務收費,定價主要面向小型企業。除了開放原始碼外,Plausible 也是越來越多擁有公開路線圖以提高透明度的公司之一。它也會在其部落格上發布提供給潛在客戶的資訊性內容。
從技術角度來看,Plausible 相當獨特,其伺服器端程式碼以 Elixir 撰寫,這是一種在 Erlang 虛擬機器上執行的函數式程式語言。其前端介面則使用少量的原生 JavaScript 來處理互動部分,而非使用像 React 這類渲染框架。它還標榜擁有最小的分析指令碼,在撰寫本文時,plausible.js 僅有 781 位元組(未壓縮為 1.2KB)。相比之下,GA 的 analytics.js 將近 18KB(未壓縮為 46KB),而 GoatCounter 的 count.js 則為 2.3KB(未壓縮為 6.3KB)。由於這些指令碼會在網站的每個頁面載入,其大小差異可能會帶來實質影響。
在使用者介面方面,Plausible 肯定比 GoatCounter 更為精緻。不過,它也相當極簡,甚至可能比 GoatCounter 更為簡約,僅提供總訪客人數、依路徑區分的頁面瀏覽次數、參照來源資訊、地圖位置以及裝置資訊(依螢幕尺寸、瀏覽器與作業系統細分)。該工具還提供「跳出率」指標,不過其確切定義並不清楚。
Plausible 的首頁聲稱提供「100% 資料所有權」,可以匯出單一圖表的 CSV 資料(也能刪除 Plausible.io 帳號)。然而,其資料匯出遠不如 GoatCounter 的完整資料匯出實用,後者包含了每個事件的詳細資訊。
自行架設 Plausible 是可行的(甚至是 plausible 的),不過如同創辦人 Uku Taht 在宣布轉為開源時所指出的:
值得注意的是,目前 Plausible 並未明確支援自行架設。專案仍在快速演進中,維護自行架設的解決方案會大幅拖慢產品開發速度。我希望在產品與商業模式更穩定後,未來能提供自行架設的方案。
話雖如此,就在幾週前,Plausible 新增了一份文件,說明了一種使用 Docker 來自行架設系統的實驗性方法。依照這些建議,我嘗試使用 docker-compose 在本地端執行。在長達數分鐘的安裝過程中,它下載了數量驚人的 Docker 與 npm 套件,讓人有點不安,而安裝完成後,仍出現一個難以理解的 PostgreSQL 遷移錯誤,導致無法啟動——「實驗性」這個標籤確實名副其實。
簡要介紹專有選項
還有另外兩個值得一提、專注於隱私的輕量級專有工具。顯然,這些工具沒有開放開發或自行架設的優勢,但仍提供了一種擺脫 Google 資料蒐集網的低成本途徑。
其中之一是極簡的 Simple Analytics 產品,這是一款由獨立開發者 Adriaan van Rossum 打造的雲端工具;它擁有簡潔的介面,僅顯示幾個關鍵指標,與 Plausible 類似。另一個是 Fathom,它最初是開源的,但目前的版本為專有軟體(不過該公司希望未來能重新維護開源程式碼庫)。
總結
過去幾年出現了不少 Google Analytics 的優質替代方案,特別是對於只需要一些基本功能的使用者而言。許多近期的替代方案同時具備開源與注重隱私的特性,這意味著專案與企業繼續使用專有分析系統的理由越來越少。
對於只需要基本流量數據的網站擁有者來說,GoatCounter 與 Plausible 似乎都是極佳的選擇。偏好更精緻的視覺呈現與文件的使用者可能會更喜歡 Plausible;而重視對開發者更友善、易於自行架設的工具的使用者,則可能會更偏好 GoatCounter。我們很快將會發布第二篇文章,介紹一些更重量級的 GA 替代方案,以及可從網站伺服器紀錄檔提供分析的工具。
隨機一篇部落格
![GoatCounter 介面 [來自 www.goatcounter.com 的 GoatCounter 介面]](https://static.lwn.net/images/2020/wa-goatcounter-sm.png)
![Plausible 介面 [來自 plausible.io 的 Plausible 介面]](https://static.lwn.net/images/2020/wa-plausible-sm.png)
留言
登入後參與討論