FullStory、Hotjar 等工作階段回放工具會記錄你的滑鼠、按鍵和捲動操作。了解其運作原理、如何識別,以及如何降低風險。
沒錯——越來越多網站會執行工作階段回放腳本(session replay scripts),悄悄記錄你的滑鼠移動、按鍵、點按和捲動操作,讓後台的某個人日後能像看影片一樣回放你整個造訪過程。這類工具中最知名的是 FullStory 和 Hotjar,它們對外宣稱是使用者體驗分析工具,但在預設設定下,記錄的遠不只點擊和頁面瀏覽量:它們幾乎能重建你在頁面上做的所有事,有時甚至包括你輸入到網站本不該公開的欄位裡的文字。
關鍵要點
- 工作階段回放腳本(FullStory、Hotjar 及類似工具)會記錄滑鼠移動、按鍵、點按、捲動和 DOM 變化,藉此重建你造訪過程的「回放」。
- 它們的原理是為輸入、滑鼠和捲動事件掛上監聽器,並觀察 DOM 變化——這與任何頁面都能使用的瀏覽器 API 相同,只是被用來監視而非實作功能。
- 大多數實作中,記錄預設是「選擇退出」(opt-out)而非選擇加入:網站必須主動遮蔽敏感欄位,而多次稽核都發現這種遮蔽並不完整。
- 你通常可以透過檢查頁面載入的腳本與網路請求中是否有已知供應商網域,或留意每次按鍵都觸發的異常頻繁信標流量,來發現工作階段回放的存在。
- 內容封鎖器、腳本封鎖擴充功能,以及對不熟悉的網站停用 JavaScript,都能減少暴露;但沒有一個萬能開關能讓你在所有網站上都退出。
工作階段回放究竟記錄了什麼
工作階段回放腳本不只是統計頁面瀏覽量——它在建構一段錄影。依設定不同,它可以擷取:
- 滑鼠移動與點擊——你游標經過的確切路徑,包括你從未點擊過但曾停留的元素
- 按鍵與表單輸入——輸入到文字欄位中的字元,有時在你送出表單之前就已被記錄
- 捲動與可視區域變化——你捲動了多遠、停留了多久,以及每個時刻螢幕上顯示的內容
- DOM 變化——隨著你與頁面互動,元素的出現、消失或變化,讓工具能逐格重建頁面的視覺狀態
綜合這些訊號,分析人員(或自動化儀表板)就能拖動時間軸,幾乎完全依照你當時的體驗重新觀看你的工作階段——連游標動作都不放過。
FullStory 與 Hotjar 類工具的運作原理
工作階段回放供應商會提供一小段 JavaScript 程式碼片段,網站將其加入每個頁面,方式與加入 Google Analytics 相同。載入後,該腳本會為標準瀏覽器事件(mousemove、keydown、scroll、input)掛上監聽器,並使用 MutationObserver 這類觀察者 API 監視 DOM 變化。這一切都不需要任何特殊的瀏覽器權限——它只是每個互動式網頁早已依賴的同一套事件模型,只是被接上記錄功能,而非用來渲染某項特性。
擷取到的事件會被批次送回供應商的伺服器,在那裡重新組裝成可拖動播放的「回放」——本質上是一段由原始互動資料合成出來的影片,而非真實像素錄製。大多數供應商都提供了一套遮蔽(masking)API,讓網站可以把特定欄位(例如信用卡卡號)標記為「不記錄」,但這種遮蔽必須由整合腳本的人逐欄位主動設定才會生效。根據 EFF 對企業監控技術的研究,工作階段回放工具多次被發現外洩了本應由遮蔽保護的資料——包括醫療資訊、信用卡卡號和密碼——原因是過濾敏感欄位這件事「細膩、繁瑣、耗時」,網站經常做錯,或乾脆略過不做。
如何在頁面上偵測工作階段回放腳本
你不需要特殊工具就能發現大多數工作階段回放的接入痕跡——只要知道去哪裡看。
- 檢查頁面的腳本來源。 開啟瀏覽器開發者工具,切到 Network 分頁並重新整理頁面,尋找發往已知工作階段回放網域的請求(FullStory 通常從
fullstory.com載入,Hotjar 則從hotjar.com或static.hotjar.com載入)。指向這類網域的腳本標籤就是強烈的訊號。 - 留意每次按鍵或每次移動都觸發的網路流量。 工作階段回放腳本經常在你與頁面互動時批次送出並清空一個個小型 POST 請求。如果你發現每次移動滑鼠或打字都有持續不斷的外送請求,這與回放式記錄相符,而一般分析工具通常每次頁面瀏覽只送出一次請求。
- 檢查全域變數。 許多工作階段回放程式碼片段會在
window上掛載一個可識別的物件(例如某個供應商專屬的命名空間)。頁面載入後在主控台輸入該供應商預期的全域變數名稱,可以確認該函式庫是否存在。 - 查看頁面原始碼中的載入腳本。 和大多數第三方腳本一樣,工作階段回放的載入器通常以一小段內嵌
<script>程式碼區塊的形式插入頁面頂部——即使頁面尚未渲染,在「檢視網頁原始碼」中也能看到。
單獨來看,這些檢查都不是萬無一失的——網站可以自行架設或重新命名腳本,讓它更難被一眼看出——但綜合運用,能涵蓋絕大多數真實存在的部署,因為多數網站基本上是直接沿用供應商提供的腳本。
隱私風險與緩解措施
核心風險不在於工作階段回放這項技術本身存在——許多正當的使用者體驗研究確實仰賴它——而在於記錄預設是「選擇退出」而非「選擇加入」,而且正確設定腳本以保護敏感資料的責任完全落在設定腳本的人身上。開發者忘記遮蔽的某個表單欄位、密碼管理員在遮蔽規則生效前就自動填入了內容,或客服人員拖動回放時剛好看到一個先打錯又更正的信用卡卡號——這些都是真實發生過的失效情境,而非假設狀況。
以下幾個實際做法能降低你的暴露風險:
- 使用內容封鎖擴充功能。 大多數廣告與追蹤封鎖器維護的過濾清單已包含主要工作階段回放供應商的網域,能在腳本掛上任何監聽器之前就將其封鎖。
- 在條件允許時,對不信任的網站停用 JavaScript——工作階段回放完全仰賴用戶端腳本執行,沒有 JavaScript 就沒有備援記錄途徑。
- 在含有敏感資料的表單上保持謹慎。 如果網站的某些行為(即時輸入預覽、異常延遲)讓你懷疑有東西在即時監視輸入,就避免輸入你不希望被逐字保存的敏感資訊。
- 檢查自己的暴露情況。 BrowserInsight 的瀏覽器擴充功能與腳本檢測可以協助你發現瀏覽器工作階段中正在執行的活躍腳本與外掛,我們的瀏覽器擴充功能隱私指南則從另一個角度說明了擴充功能讀取相同資料的平行風險。
綜合來看
工作階段回放很好地說明了一個瀏覽器功能完全依照設計運作、卻仍造成真實隱私問題的案例:mousemove 監聽器或 MutationObserver 本身並無惡意,但當它們被用在未經遮蔽的表單欄位上、並把資料送往第三方時,彙整起來的結果就是一段你從未明確同意過的工作階段記錄。它與我們機器人偵測技術指南中介紹的其他自動化蒐集技術有相通之處——兩者都仰賴對一般瀏覽器訊號進行評分或記錄,只是目的截然不同。
常見問題
工作階段回放和螢幕錄影是同一回事嗎?
不完全是。工作階段回放並不擷取真正的影片或像素——它記錄的是離散事件(滑鼠位置、按鍵、DOM 變化),並在事後依這些資料重建出視覺回放。結果看起來像螢幕錄影,但你的裝置上從未產生過真正的影片檔案。
工作階段回放腳本能看到我的密碼嗎?
如果網站正確遮蔽了密碼欄位,理論上不能——大多數供應商預設會排除 type="password" 的輸入框。真正的風險在於其他敏感欄位(身分證字號、卡號、輸入到自由文字框中的醫療細節),獨立稽核發現這些欄位被遺漏遮蔽的情況比供應商預期的更常見。
我一定要接受工作階段回放追蹤嗎?
沒有統一的退出方式,因為它是逐站實作的,而非透過 Do Not Track 這類瀏覽器層級標準統一控管。使用能過濾已知供應商網域的內容封鎖器,是逐站阻擋它最可靠的方式;部分司法管轄區的隱私法律也要求同意橫幅揭露這類追蹤,但執行力度差異很大。
工作階段回放和一般的網站分析有什麼不同?
標準分析工具(頁面瀏覽量、點擊次數、彙總漏斗)以摘要形式記錄「發生了什麼」。工作階段回放則在單一滑鼠與按鍵事件的層級記錄「事情是怎麼發生的」,接著讓人能回放某位訪客的具體工作階段——這是一種粒度細得多、也更容易辨識個人身分的資料蒐集方式。

