技術細節:授權、連線與加密怎麼運作

給需要排查連線問題或評估安全性的開發者,說明網頁版背後的機制。

WhatsApp網頁版之所以能免安裝,關鍵在於它把瀏覽器當成一個受信任的顯示端,真正的身分與金鑰仍留在手機上。以下從授權流程、連線方式與加密邊界三個角度拆解,並附上企業環境常見的排查順序。

技術細節:授權、連線與加密怎麼運作

運作原理

運作原理

QR Code 授權:一次性憑證的交換

頁面載入時,瀏覽器會向伺服器取得一組帶時效的 QR Code,內含本次連線的公開資訊。手機掃描後,兩端透過既有的加密通道確認彼此,手機端再將網頁版所需的金鑰材料傳給瀏覽器。整個過程通常在 3 到 5 秒內完成,QR Code 預設每 20 秒失效一次,過期後需重新取得。

長連線與訊息推送

授權完成後,瀏覽器與伺服器之間建立長連線,新訊息以推送方式送達,正常延遲在 1 秒內。這條連線對網路環境較敏感:企業防火牆若攔截 WebSocket 或中斷閒置連線,就會出現 QR Code 一直轉圈或訊息延遲的現象。排查時可先確認 443 埠對外連線,再檢查是否有代理伺服器介入。

端對端加密的邊界

訊息內容在手機端加密,伺服器只負責轉發密文,網頁版取得的金鑰材料僅足以解密與此授權相關的內容。這代表:第一,伺服器無法讀取明文;第二,未經授權的瀏覽器無法解讀歷史訊息;第三,撤銷授權後,該瀏覽器即失去解密能力。實務上仍應避免在公用電腦登入,因為授權期間瀏覽器可讀取已同步的對話。

企業環境排查順序

  1. 確認電腦可正常開啟其他 HTTPS 網站,排除整體斷網。
  2. 用無痕視窗重試,排除瀏覽器擴充功能干擾。
  3. 改用手機熱點測試,若正常則問題在企業網路政策。
  4. 請 IT 檢查是否封鎖長連線、WebSocket 或特定網域。
  5. 確認系統時間誤差在 5 分鐘內,避免授權驗證失敗。

以上五步通常能在 10 分鐘內定位問題來源。若是網管政策造成,只能由 IT 調整白名單,使用者端無法繞過。

常見現象與對應原因

現象可能原因處理方向
QR Code 一直轉圈長連線被防火牆阻擋請 IT 放行 443 埠與對應網域
掃碼後卡在等待授權手機或電腦網路不穩兩端都改用穩定網路後重試
訊息延遲超過 10 秒分頁被凍結或電腦休眠固定分頁、關閉省電模式
授權反覆失效瀏覽器清除資料或裝置數已滿檢查設定並清理舊裝置紀錄

技術面的常見疑問

網頁版會把訊息存在瀏覽器裡嗎?

會暫存部分已同步的內容在本機瀏覽器儲存空間,以便重新整理後快速顯示。清除瀏覽器資料後需重新掃碼並重新同步。若在公用電腦使用,登出後建議一併清除該站資料,降低殘留風險。

為什麼不能用網頁版打語音電話?

語音與視訊通話需要即時的音視訊通道與裝置權限,目前 WhatsApp 只在手機與桌面應用程式提供。網頁版定位為訊息與檔案的鏡像端,因此不包含通話功能,這是產品設計上的取捨。

端對端加密代表網頁版絕對安全嗎?

加密保護的是傳輸與伺服器端,不保護已授權的裝置本身。授權期間,任何能操作該瀏覽器的人都能看到對話。因此安全性取決於裝置管理:不在公用電腦登入、離開前撤銷授權、定期檢查已連結裝置清單。

可以透過 API 或腳本自動化操作網頁版嗎?

不建議。網頁版沒有公開的自動化介面,用腳本模擬操作可能違反服務條款,且授權機制會因環境變動而失效。若需要程式化收發訊息,應評估官方提供的商業 API,而非驅動網頁版。

企業內部大量使用要注意什麼?

三個重點:一是網路政策需放行長連線,否則使用者會不斷遇到連線失敗;二是共用電腦需建立登出規範,避免帳號混用;三是裝置數上限為 4 台,團隊共用門號時要定期清理不再使用的授權紀錄。

WhatsApp網頁版技術細節:連線與加密

本頁從開發者視角說明 WhatsApp網頁版 的長連線機制、QR Code 授權流程、端對端加密金鑰如何傳遞,以及企業網路環境下的連線排查方法。內容以協議行為與實作觀察為主,不涉及帳號隱私資料。

WebSocket 長連線與心跳機制

WhatsApp網頁版 在瀏覽器端與伺服器之間維持一條 WebSocket 連線,用於接收訊息、送達回執與在線狀態更新。連線建立後,客戶端會以固定間隔發送心跳帧,多數情況下間隔為 20 至 30 秒;若連續兩次心跳未收到伺服器回應,客戶端會主動關閉連線並進入重連流程。重連採用指數退避,初始延遲約 1 秒,上限通常落在 30 至 60 秒之間。

開發者需注意,瀏覽器分頁進入背景時,計時器可能被節流,導致心跳延遲。若應用依賴網頁版會話狀態,建議以 visibilitychange 事件監聽分頁切換,並在回到前景時主動檢查連線狀態。此外,WebSocket 握手階段會攜帶瀏覽器指紋與會話標識,伺服器據此綁定裝置。

QR Code 授權流程與金鑰協商

掃碼登入並非單純的身分驗證,而是一次裝置綁定與金鑰協商。流程大致如下:

  1. 網頁端向伺服器請求一組臨時授權碼,伺服器回傳 QR Code 內容,其中包含公鑰與會話 ID,有效期一般為 20 至 60 秒。
  2. 手機端掃描 QR Code 後,以自身私鑰對會話內容簽章,並將簽章結果經由手機與伺服器之間的既有加密通道回傳。
  3. 伺服器驗證簽章後,將網頁端標記為已授權裝置,並下發該會話專用的加密金鑰材料。
  4. 網頁端與手機端各自衍生出相同的會話金鑰,後續訊息以端對端加密方式傳輸,伺服器僅負責轉發密文。

常見錯誤是重複使用已過期的 QR Code,此時伺服器會拒絕簽章並要求重新產生。另一個常見問題是手機與網頁端時間偏差過大,導致簽章時間戳驗證失敗,建議裝置開啟自動時間同步。

端對端加密金鑰的傳遞路徑

WhatsApp 採用 Signal 協議的雙棘輪機制。在網頁版場景中,金鑰傳遞遵循以下路徑:手機端持有身分私鑰,網頁端透過授權流程取得會話金鑰;訊息發送時,發送方以會話金鑰加密明文,伺服器僅轉發密文,接收方以對應金鑰解密。金鑰材料不會以明文形式經過伺服器,伺服器也無法解密訊息內容。

需留意的是,網頁版作為已連結裝置,其會話金鑰由手機端授權衍生,因此手機端可隨時撤銷網頁版裝置,撤銷後網頁端持有的金鑰即失效。開發者若在企業環境中整合網頁版,應避免在共用裝置上長期保持授權狀態,並定期檢查已連結裝置清單。

企業網路環境下的連線排查

企業防火牆或代理伺服器常攔截 WebSocket 升級請求,導致網頁版停留在「連線中」狀態。排查時可依序檢查:

  • 確認防火牆允許 Upgrade: websocket 標頭通過,部分代理僅支援 HTTP/1.1 而阻斷升級。
  • 檢查 TLS 憑證鏈是否完整,中間憑證缺失會造成握手失敗,瀏覽器主控台通常顯示 ERR_CERT_AUTHORITY_INVALID。
  • 確認 DNS 解析未被內部劫持,可透過 nslookup 比對公用解析結果。
  • 若使用強制代理,需將 WebSocket 端點加入例外清單,否則連線會反覆中斷。

多數情況下,上述檢查可解決八成的連線問題。若問題持續,可收集瀏覽器網路日誌與伺服器回應碼,進一步分析是否為伺服器端限流或區域網路政策所致。

開發者實作注意事項

若你正在開發與 WhatsApp網頁版 互動的工具,應避免直接模擬瀏覽器行為繞過授權流程,這可能觸發伺服器風控並導致裝置被撤銷。建議使用官方提供的 Business API 或合規的整合方式。此外,網頁版的會話狀態與手機端綁定,手機端離線超過一定時間(通常為 14 天)後,網頁版可能被要求重新掃碼授權。測試時應將此因素納入考量,避免自動化腳本因會話失效而中斷。

  1. 產生並檢查 QR Code 內容

  2. 手機端掃碼並觀察簽章回傳

  3. 驗證 WebSocket 連線與心跳

  4. 檢查金鑰協商結果

  5. 模擬企業網路限制