WebSocket 長連線與端到端加密的實現方式
WhatsApp網頁版並非獨立運作的應用程式,而是手機端的延伸客户端。當你掃碼配對成功後,瀏覽器會與 WhatsApp 伺服器建立一條 WebSocket 長連線(預設連接埠 443,走 TLS 1.3),所有訊息透過這條通道即時推送。手機端負責金鑰管理與訊息加解密,網頁版僅負責顯示與輸入,這意味著手機必須保持連網狀態,否則網頁版會在約 14 天後因會話過期而自動登出。
端到端加密採用 Signal Protocol,訊息在金鑰派生後於手機端加密,伺服器僅轉發密文。網頁版收到的內容已在手機端解密後再以會話金鑰重新封裝傳輸,因此瀏覽器開發者工具中看到的是密文封包,無法直接讀取明文。若你需要除錯網路行為,可在 Chrome DevTools 的 Network 面板過濾 wss://web.whatsapp.com 觀察連線狀態,但不要嘗試注入指令碼修改封包,這會觸發會話失效。
多裝置登入的會話隔離
自 2021 年多裝置架構上線後,每個網頁版登入都是一個獨立會話,最多可同時存在 4 個已配對裝置(含手機本體)。每個會話有獨立的會話金鑰與訊息佇列,互不干擾。這表示你在公司電腦與家用筆電同時登入,兩邊看到的聊天列表一致,但已讀狀態可能因裝置而略有延遲(通常 1 至 3 秒)。若某個會話超過 14 天未使用,系統會自動撤銷該會話,需重新掃碼。
瀏覽器相容性與必要設定
官方支援 Chrome 72 以上、Firefox 68 以上、Safari 12 以上、Edge 79 以上。實測中,Chrome 與 Edge 的體驗最穩定,Firefox 在傳輸大檔案(超過 100 MB)時偶爾出現進度停滯。以下是常見的環境問題與排除方式:
- 相機權限被拒:掃碼需要瀏覽器取得相機權限,若之前誤按「封鎖」,需到網址列左側的鎖頭圖示重新允許,並重新整理頁面。
- 混合內容封鎖:部分企業網路代理會攔截 WebSocket,導致頁面一直顯示「正在連線」。可嘗試切換到行動網路或關閉代理。
- 第三方 Cookie 限制:Safari 的「防止跨網站追蹤」可能影響會話保存,建議將本站加入例外清單。
- 擴充功能干擾:廣告封鎖器(如 uBlock Origin)有時會誤擋 WhatsApp 的資源載入,可暫時停用測試。
從掃碼到連線的時序細節
掃碼流程背後的時序如下:手機掃描 QR Code 後,會向伺服器驗證該碼是否有效(有效期通常為 20 秒,過期需重新整理頁面取得新碼),驗證通過後手機端產生會話金鑰並透過加密通道傳給伺服器,伺服器再通知瀏覽器建立 WebSocket。整個過程一般在 2 至 5 秒內完成。若超過 30 秒仍未進入聊天介面,通常是手機端網路不穩或瀏覽器阻擋了 WebSocket,可依序檢查:手機是否開啟飛航模式、瀏覽器是否為最新版、是否使用公司 VPN。
連線建立後,瀏覽器會先同步最近 6 個月的訊息(不含已刪除項目),同步期間介面可操作但部分舊訊息可能延遲載入。若訊息量龐大(超過 5 萬則),首次同步可能耗時 1 至 2 分鐘,期間請保持頁面開啟。