java - 如何在 Chrome 驱动程序中禁用 WebRTC?

标签 java selenium selenium-chromedriver

我想在 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 的信息。

最佳答案

我找到了解决方案。

我不知道如何直接在 Chrome 驱动程序设置中禁用 WebRTC,但还有另一种方法:添加一些 WebRTC 阻止扩展程序。我是这样做的:

  1. 启动 Chrome 浏览器并在 Chrome 网上应用店中搜索 Get CRX 扩展程序,然后安装 Get CRX。
  2. 现在,如果您在 Chrome 网上应用店中搜索任何其他扩展程序,打开其页面并右键单击页面上的任意位置,您将在上下文菜单中看到“获取 CRX”。找到您最喜欢的 WebRTC 阻止扩展程序,打开其页面并单击“获取 CRX”。下载 .crx 文件。现在,您已在此 .crx 文件中添加了 WebRTC 阻止扩展程序,并且可以在 Chrome 驱动程序中使用它。
  3. 使用此代码启动带有扩展程序的 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 对其进行编码(导入 org.apache.xerces.impl.dv.util.Base64)。

现在,您的 Chrome 驱动程序将使用 WebRTC 阻止扩展程序启动,因此,WebRTC 将被禁用。

但这种方法并不理想,因为在这种情况下,您将在浏览器插件中阻止 WebRTC 扩展。所以,如果你想在测试某个站点时完全随机(即不同的 IP、不同的窗口大小、不同的用户代理、不同的插件),它不会是这样的,因为你将始终拥有相同的插件。

因此,如果有人知道如何在没有扩展的情况下禁用 WebRTC,我们将不胜感激。

关于java - 如何在 Chrome 驱动程序中禁用 WebRTC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44599265/

相关文章:

xml - Selenium:无法通过 XPath 抓取文本

C# Selenium 浏览和上传文件

python - 在python中使用selenium获取所有href链接

selenium-webdriver - 如何使用 Selenium Webdriver 使用 <mat-icon> 标记值

selenium - 如何在 Robot Framework 中最大化 Headless Chrome 窗口?

java - 公共(public)静态方法 - 一个坏兆头?

java - 如何每 15 分钟运行一次 android 函数,特别是每天 15 分钟?

java - 识别java中的空格

java - 如何在 Eclipse 中设置 chromedriver 的文件路径

java - Hibernate 将 NULL 插入原始类型字段