Chrome的命令行开关 --force-webrtc-ip-handling-policy在 Release构建中未阻止IP泄漏

前端开发 2026-07-09

我正在尝试在macOS上以一个特定的user-data-dir和代理设置启动一个独立的Google Chrome实例。我的目标是在不使用扩展、也不影响全局系统策略的情况下,将WebRTC限制为仅使用已配置的代理(隐藏真实的公共IP)。

我的研究

根据 Chrome Enterprise Policy文档,策略WebRtcIPHandling可以设置为disable_non_proxied_udp来实现此目的。

要通过命令行对每个实例应用这一策略,我找到了开关 --force-webrtc-ip-handling-policy,来源于 peter.sh。我进一步在Chromium源码中验证了其实现:

  • content/public/common/content_switches.cc(定义了字符串常量)
  • content/browser/webrtc/webrtc_ip_permissions_browsertest.cc(演示其用法)

问题

我使用以下命令启动Chrome:

代码段Bash

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--user-data-dir="$HOME/Isolated_Chrome" \
--proxy-server="http://127.0.0.1:10808" \
--force-webrtc-ip-handling-policy=disable_non_proxied_udp

在Chrome中的验证:

  • chrome://version在“Command Line”部分正确列出该开关。
  • chrome://prefs-internals显示该偏好已被正确解析:
    "webrtc": { "ip_handling_policy": "disable_non_proxied_udp" }

实际结果:
当我访问 browserleaks.com/webrtc 时,WebRTC公共IP地址一栏仍然显示我的实际运营商的公网IP,而不是被阻止或通过代理路由。

我的问题

  1. 为什么在Chrome的 Release构建中,尽管已经成功解析到内部偏好设置,但 --force-webrtc-ip-handling-policy开关会被网络栈忽略?
  2. 是否存在其他命令行参数(或在启动前以编程方式修改user-data-dir中的Preferences文件的方法),能够对单个实例可靠地强制执行此策略?

我知道有系统范围的defaults write com.google.Chrome方法,但我需要一个严格限定于特定user-data-dir的解决方案。

解决方案

你需要使用:

--force-webrtc-ip-handling-policy \
--webrtc-ip-handling-policy=disable_non_proxied_udp

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章