跳到主要內容

WebRTC洩漏

WebRTC洩漏測試:瀏覽器通話會透露你哪些IP位址

所屬主題:VoIP網路電話安全嗎?瀏覽器通話保護了什麼、又暴露了什麼

在 Google 上將 callfrombrowser.org 設為偏好來源

重點摘要

WebRTC洩漏測試會列出瀏覽器透過WebRTC交給網頁的每一個IP位址,讓你找出原本想隱藏的那一個,通常是開著VPN時你的網路業者位址[1]。用瀏覽器撥打電話號碼時,看得到你IP的是通話服務,而不是你撥給的人,對方看到的是來電號碼[2]。這項測試是我建議在用瀏覽器打電話前做的隱私與安全檢查之一。

關鍵事實

什麼是WebRTC洩漏?

在WebRTC通話開始前,瀏覽器會收集可能的網路路徑,稱為ICE候選(ICE candidates),再交給網頁傳送給另一端。每個候選都帶有一個IP位址,或是用隨機的.local名稱代替被隱藏的區域網路位址。一般網站只看得到你發出請求的公開位址;透過WebRTC,網頁可以得知更多[1]。只要清單中出現你不想分享的位址,就算是洩漏。

通話其餘部分如何傳送,請看WebRTC、SIP與電話網路;就洩漏而言,只有候選清單才重要。MDN指出,這些位址一律會暴露給網頁[6]。

WebRTC洩漏測試列出的位址,以及各自透露的資訊
候選類型顯示的位址隱私風險
host你的裝置在區域網路上的位址;如果瀏覽器加以隱藏,則是以.local結尾的隨機名稱[7][3]比公開位址低,但IETF認為私有IPv4位址是相當重要的指紋辨識來源[1]
srflx(server reflexive)你的路由器或VPN向STUN伺服器顯示的公開位址[7]如果開著VPN時顯示的是網路業者的位址,風險就高[1]
relay負責轉送媒體的TURN伺服器上的位址[7]低:另一端看到的是中繼伺服器的位址,不是你的[6];但中繼伺服器的營運者仍看得到你

IETF認為VPN的情況最嚴重,因為有些人用VPN來保持匿名[1]。另外兩種情況是你的私有位址,以及WebRTC的檢查繞過了代理伺服器,因而暴露你真正的公開位址[1]。

瀏覽器通話會暴露你的IP位址嗎?

對通話服務來說,會:每個網站都看得到你的公開位址[1],而通話還會額外建立一條連到服務伺服器的媒體連線。對你撥打的市話或手機用戶來說,不會:通話在業者的閘道離開網際網路[8],電話網路傳遞的是來電號碼,不是IP位址[2]。App對App的通話則可能讓兩台裝置直接連線。

不同通話類型下誰看得到你的IP位址(依2026年11月1日閱讀的官方說明頁面)
通話類型服務業者你撥打的對象
瀏覽器撥打電話號碼(Google Voice、TwinPhone、Yolla)是:由它負責媒體連線否:對方看到的是來電號碼[2]
免費網頁撥號器(Call2Friends、Globfone)是:Call2Friends依IP位址限制免費通話次數,Globfone的隱私權政策也把IP位址列為其處理的技術資料和紀錄之一[9][10]否:對方看到的是來電號碼
Messenger一對一通話是是:Meta表示你的IP會分享給對方的裝置[4]
WhatsApp是可能,除非開啟「在通話中保護IP位址」;群組通話一律經由轉送[5]
Telegram是可能:Telegram在2017年的公告表示,通話會盡可能採用點對點連線[11]

撥打真實號碼時,關鍵在於服務業者會得知並保留哪些資訊;至於你撥打的對象看到的是什麼,請看用瀏覽器打電話時會顯示哪個號碼。

如何進行WebRTC洩漏測試

洩漏測試網頁做的事和撥號器在通話前做的一樣:建立WebRTC連線、詢問STUN伺服器看到的公開位址,然後把每個候選列出來,並與它透過一般HTTP看到的位址並列。請在每個你用來打電話的瀏覽器上測試,先關閉VPN,再開啟VPN各測一次。

  1. 關閉VPN:開啟一個洩漏測試網頁,例如BrowserLeaks的WebRTC Leak Test。頂端的「Your Remote IP」和「Your WebRTC IP」下方的「Public IP Address」應該一致。
  2. 開啟VPN:重新載入。「Your Remote IP」現在應該顯示VPN的位址。
  3. 如果WebRTC區塊仍列出網路業者的位址,代表WebRTC繞過了通道[1]。
  4. 以.local結尾的區域網路項目代表位址已被隱藏[3];以192.168.或10.開頭的原始位址則沒有隱藏。
  5. 如果網頁提供麥克風檢查,請允許後再測一次:撥號器需要麥克風權限,而這項權限可能解鎖更多位址[1]。測完後到網站設定中移除這項權限[12]。

允許麥克風後,Chrome有什麼變化

我在用Mac上的Chrome 156載入一個本機測試網頁,沒有設定STUN伺服器,所以沒有任何位址傳到外部伺服器。在沒有麥克風權限時,網頁只看到一個host候選,名稱是以.local結尾的隨機字串[3]。允許麥克風後,它就收到了我真正的區域網路IPv4位址。

這符合標準的規定:只有在取得同意(例如麥克風權限)時才提供完整的位址清單[1];Safari的引擎WebKit在2017年也描述過同樣的規則[13]。所以你允許的撥號器看得到你的區域網路位址:風險比公開位址小[1]。

限制WebRTC洩漏的瀏覽器設定

Brave為一般使用者提供了WebRTC IP設定的說明。Google的Chrome控制項說明是寫給擴充功能和管理員看的,Microsoft則把Edge的控制項列為管理員政策。Firefox預設就會隱藏區域網路位址,並在about:config保留一個關閉開關。有一條規則到哪裡都適用:關閉WebRTC也會讓瀏覽器撥號器停止運作,因為通話正是靠WebRTC傳送[14]。

各瀏覽器的WebRTC位址控制項(依2026年11月1日閱讀的廠商文件)
瀏覽器控制項改變了什麼對瀏覽器通話的影響
Brave隱私設定中的WebRTC IP handling policy,依據Brave的wiki(最後編輯於2018年)[15]Default Public Interface Only不會暴露任何區域網路位址[15]媒體可能改由中繼伺服器傳送[1]
Chrome擴充功能可設定WebRTC IP handling policy[16];管理員可設定WebRtcIPHandling政策[17]依設定值不同,會停止使用私有位址,或只透過代理伺服器傳送媒體[17]僅限代理的設定值可能讓音訊改走TCP,IETF表示這會降低品質[1]
Edge管理員政策WebRtcLocalhostIpHandling[18]其中兩個設定值會停止暴露區域網路IP位址[18]與Chrome相同
Firefox預設隱藏區域網路位址[19];about:config中的media.peerconnection.enabled[20]把這個偏好設定改為false就會關閉WebRTC瀏覽器撥號器將無法使用
Safari內建規則依WebKit在2017年的說明,沒有麥克風或攝影機權限的網頁取得不到host位址[13]無

VPN對瀏覽器通話有什麼影響

如果VPN讓所有流量(包括WebRTC)都走它的通道,通話服務看到的就是VPN的位址,而不是你的。分流VPN則可能讓WebRTC找到你網路業者的位址[1],所以才要在開著VPN時做洩漏測試。VPN對通話也有副作用。

通話時如何保護IP位址隱私

依通話類型對症下藥。撥打電話號碼時,你撥給的人拿不到你的IP,所以要選一個你信得過的服務,並檢查VPN。App對App通話時,對方的裝置可能直接連到你的裝置,所以如果App有轉送設定,就把它打開。

  1. 瀏覽器通話:開著VPN做洩漏測試;在Brave中選擇Default Public Interface Only[15]。
  2. 麥克風:只用一次的撥號器,請選「這次允許」授權[12];在我的Chrome檢查中,持有這項權限的網頁看得到區域網路位址。
  3. WhatsApp:開啟「在通話中保護IP位址」。說明頁面涵蓋Android、iOS和Mac,不包括網頁版,並提醒轉送的通話品質可能略為下降[5]。

常見問題

什麼是WebRTC洩漏測試?

WebRTC洩漏測試是一個網頁,它會執行瀏覽器通話所用的連線設定程序,列出瀏覽器提供的每一個IP位址,並與網頁透過一般HTTP看到的位址並列。如果開著VPN時清單中出現網路業者的位址,代表WebRTC繞過了通道[1];隨機的.local名稱則代表你的區域網路位址已被隱藏[3]。

我用瀏覽器打電話,對方看得到我的IP位址嗎?

撥打市話或手機時看不到。業者會在閘道把你的瀏覽器音訊轉成電話通話[23],電話網路傳遞的是來電號碼,不是IP位址[2]。App對App通話則不同:Messenger表示一對一通話會把你的IP分享給對方的裝置[4]。

VPN能阻止WebRTC洩漏嗎?

讓所有流量(包括WebRTC)都走通道的VPN可以。分流VPN則未必,因為WebRTC可能在VPN位址之外,另外發現你網路業者的公開位址[1]。唯一能確定的方法,是在連著VPN時,於每個你使用的瀏覽器做洩漏測試,並在更新後重測。

區域網路IP位址洩漏危險嗎?

比公開位址洩漏輕微。像192.168.1.20這樣的私有位址不會透露你在哪裡,但IETF認為私有IPv4位址是相當重要的指紋辨識來源,可以把同一台裝置上的一般瀏覽和私密瀏覽工作階段連結起來[1]。Firefox預設會隱藏區域網路位址[19],Safari會對沒有麥克風或攝影機權限的網頁隱藏[13],在我的檢查中Chrome也是如此。

無痕模式或私密瀏覽能阻止WebRTC洩漏嗎?

不能。IETF指出,透過WebRTC暴露的私有位址可以當作識別碼,讓網站得知一般視窗和私密瀏覽視窗位於同一台裝置[1],所以光靠私密模式無法隱藏它。請使用上面的瀏覽器設定,然後在私密視窗中也做一次洩漏測試。

防止WebRTC洩漏的擴充功能有用嗎?

部分有用。在Chrome中,擴充功能可以設定瀏覽器的WebRTC IP handling policy,Google形容這是在媒體效能與暴露多少區域網路位址資訊之間取捨[16]。依設定值不同,它會隱藏區域網路位址,或強制媒體經過代理伺服器,這可能讓音訊改走TCP並降低品質[1]。安裝後請做一次洩漏測試,確認設定已生效。

如何在Firefox中關閉WebRTC?

在網址列輸入about:config,搜尋media.peerconnection.enabled並設為false。Mozilla的原始碼把這個偏好設定描述為RTCPeerConnection的開關,關閉它也會讓網頁無法使用麥克風API[20]。之後所有瀏覽器撥號器都會停止運作,所以對大多數打電話的人來說,維持Firefox的預設值比較好,它本來就會隱藏區域網路位址[19]。

如何在Chrome中防止WebRTC洩漏?

透過擴充功能或政策,因為Google的Chrome WebRTC位址控制項說明就是針對這兩者。擴充功能可以設定WebRTC IP handling policy[16],管理員可以設定WebRtcIPHandling,其中default_public_interface_only這個值會讓WebRTC停止使用私有位址[17]。在我的Chrome檢查中,沒有麥克風權限的網頁本來就只看到隨機的.local名稱[3]。在VPN之後,真正的解法是讓所有流量都走通道[1]。任何直接封鎖WebRTC的做法,也會讓瀏覽器通話無法使用[14]。

網站能在不詢問的情況下透過WebRTC看到我的IP嗎?

你的公開位址可以,但網站本來就看得到:以Safari為例,它只給沒有麥克風權限的網頁一般網站本來就能取得的位址[13]。問題出在瀏覽器的代理伺服器。如果允許直接連上網際網路,WebRTC的STUN檢查可能繞過代理伺服器,暴露你真正的公開位址[1]。區域網路位址則受到較好的保護:標準規定完整清單必須取得同意(例如麥克風權限)才能提供[1],在我的Chrome檢查中,沒有這項權限的網頁只看到隨機的.local名稱[3]。

請 AI 解讀這份研究

每個按鈕都會在新分頁開啟 AI 助理,請它摘要本頁內容,並附上本頁連結作為來源。

資料來源

  1. RFC 8828: WebRTC IP Address Handling Requirements · IETF (RFC Editor) · 查核於 2026年11月1日
  2. 47 CFR 64.1601 -- Delivery requirements and privacy restrictions | eCFR · US Code of Federal Regulations (eCFR) · 查核於 2026年11月1日
  3. Using Multicast DNS to protect privacy when exposing ICE candidates (draft-ietf-mmusic-mdns-ice-candidates) · IETF (Internet-Draft, work in progress) · 查核於 2026年11月1日
  4. Voice call someone or a group on Messenger - Messenger Help Center (Computer) · 查核於 2026年11月1日
  5. How to protect your IP address on WhatsApp calls | WhatsApp Help Center · WhatsApp · 查核於 2026年11月1日
  6. RTCIceCandidate: address property - Web APIs | MDN · MDN Web Docs (Mozilla) · 查核於 2026年11月1日
  7. RTCIceCandidate: type property - Web APIs | MDN · MDN Web Docs (Mozilla) · 查核於 2026年11月1日
  8. Make calls | Sonetel help · 查核於 2026年11月1日
  9. Free call | Call2Friends - Online call · 查核於 2026年11月1日
  10. Privacy Policy | Globfone · 查核於 2026年11月1日
  11. Voice Calls: Secure, Crystal-Clear, AI-Powered | Telegram Blog (30 March 2017) · Telegram · 查核於 2026年11月1日
  12. Use your camera and microphone in Chrome - Computer - Google Chrome Help · Google · 查核於 2026年11月1日
  13. A Closer Look Into WebRTC | WebKit (3 July 2017) · WebKit (Apple) · 查核於 2026年11月1日
  14. WebRTC API - Web APIs | MDN · MDN Web Docs (Mozilla) · 查核於 2026年11月1日
  15. WebRTC Custom Settings · brave/brave-browser Wiki · Brave Software (official GitHub wiki) · 查核於 2026年11月1日
  16. chrome.privacy | API | Chrome for Developers · Google (Chrome for Developers) · 查核於 2026年11月1日
  17. Chrome Enterprise policy list: WebRtcIPHandling (WebRTC IP handling) · Google (Chrome Enterprise) · 查核於 2026年11月1日
  18. Microsoft Edge Browser Policy Documentation WebRtcLocalhostIpHandling | Microsoft Learn · Microsoft · 查核於 2026年11月1日
  19. Firefox source: modules/libpref/init/all.js (mozilla-firefox/firefox) · Mozilla (official Firefox source repository) · 查核於 2026年11月1日
  20. Firefox source: modules/libpref/init/StaticPrefList.yaml (mozilla-firefox/firefox) · Mozilla (official Firefox source repository) · 查核於 2026年11月1日
  21. Terms of Use – TextNow · 查核於 2026年11月1日
  22. Privacy Policy – Privacy & Terms – Google · Google · 查核於 2026年11月1日
  23. Call From Your Browser Without a SIM Card - TwinPhone · 查核於 2026年11月1日