Chrome的命令行开关 --force-webrtc-ip-handling-policy在 Release构建中未阻止IP泄漏
我正在尝试在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,而不是被阻止或通过代理路由。
我的问题
- 为什么在Chrome的 Release构建中,尽管已经成功解析到内部偏好设置,但 --force-webrtc-ip-handling-policy开关会被网络栈忽略?
- 是否存在其他命令行参数(或在启动前以编程方式修改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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。