我想在Chrome驱动程序中禁用WebRTC,但无法弄清楚如何操作。
我试过这样(在一些博客中找到了这个解决方案):
capabilities.setCapability("chrome.switches", Arrays.asList(
"--disable-webrtc-multiple-routes", "--disable-webrtc-hw-encoding",
"--disable-webrtc-hw-decoding", "--disable-webrtc-encryption"));
它不起作用。是的,我知道那里没有像“--disable-webrtc”这样的东西,但我发现WebRTC的全部内容,我的意思是,我没有找到其他一些WebRTC参数。
我在这里搜索:https://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/chrome_switches.cc
然后:https://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/pref_names.cc
没有找到关于WebRTC的任何信息。
答案 0 :(得分:2)
我找到了解决方案。
我不知道如何在Chrome驱动程序设置中直接禁用WebRTC,但还有另一种方法:添加一些WebRTC阻止扩展。我是这样做的:
使用此代码启动扩展名为
的Chrome驱动程序Map<String, Object> chromeOptions = new HashMap<String, Object>();
ArrayList<String> ext = new ArrayList<String>();
byte[] byteExt = Files.readAllBytes(new File("path to .crx file").toPath());
ext.add(Base64.encode(byteExt));
chromeOptions.put("extensions", ext);
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
WebDriver driver = new ChromeDriver(capabilities);
此代码将.crx扩展名添加到Chrome选项中。扩展名必须是base64编码的。我使用Apache Commons lib对其进行编码(import org.apache.xerces.impl.dv.util.Base64)。
现在,您的Chrome驱动程序将使用WebRTC阻止扩展程序启动,因此,WebRTC将被禁用。
但是这种方法并不理想,因为在这种情况下,您将在浏览器插件中使用WebRTC阻止扩展。所以,如果你想在测试一些网站(即不同的IP,不同的窗口大小,不同的用户代理,不同的插件)时完全随机,它将不会是这样的,因为你将始终拥有相同的插件。
因此,如果有人知道如何在没有扩展名的情况下禁用WebRTC,那么我们将非常感激。
答案 1 :(得分:0)
这是在Python中部分禁用webRTC的一种方法。这些是webRTC扩展程序/插件在Chrome中切换的选项。这些选项可防止IP泄漏问题。 Java可能与此类似。
{{1}}
可在Chrome 72上使用,但应在所有48版及更高版本上使用。