无头 chrome 忽略证书错误

新手上路,请多包涵

我需要无头 chrome 来忽略证书错误。在无头模式下运行时将忽略该选项,并且驱动程序在导航到 https 资源时返回空的 html 正文标签。

 <html xmlns="http://www.w3.org/1999/xhtml"><head></head><body></body></html>

这就是我配置 chrome 驱动程序的方式。

  ChromeOptions chromeOptions = new ChromeOptions();
 chromeOptions.addArguments("--headless", "--disable-gpu", "--window-size=1920,1200","--ignore-certificate-errors");

 DesiredCapabilities cap=DesiredCapabilities.chrome();

 cap.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
 cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
 cap.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);
 chromeHeadlessDriver = new ChromeDriver(cap);

该线程 确认 --ignore-certificate-errors 在无头模式下被忽略。

他们提到了 devtool protocol

我可以从 Java 调用它吗?还有其他选择吗?

原文由 miklesw 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 905
1 个回答

sahajamit 在 medium.com 上有一篇很棒的文章

我已经测试了下面的代码,它与自签名证书 https://badssl.com/ 完美配合

    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("useAutomationExtension", false);
    options.addArguments("--headless", "--window-size=1920,1200","--ignore-certificate-errors");

    DesiredCapabilities crcapabilities = DesiredCapabilities.chrome();
    crcapabilities.setCapability(ChromeOptions.CAPABILITY, options);
    crcapabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
    crcapabilities.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);

    System.setProperty(ChromeDriverService.CHROME_DRIVER_LOG_PROPERTY, "C:\\temp\\chrome\\chromedriver.log");
    System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, "C:\\temp\\chrome\\chromedriver.exe");

    ChromeDriverService service = null;
    try {
        service = new ChromeDriverService.Builder()
                .usingAnyFreePort()
                .withVerbose(true)
                .build();
        service.start();
    } catch (IOException e) {
        e.printStackTrace();
    }

    RemoteWebDriver driver = new RemoteWebDriver(service.getUrl(),crcapabilities);

    driver.get("https://self-signed.badssl.com/");
    System.out.println(driver.getPageSource());
    driver.quit();

软件/框架版本

  • 谷歌浏览器版本 64.0.3282.186
  • 谷歌浏览器驱动程序版本 64.0.3282.186
  • 硒版本 3.11.0

原文由 Amila kumara 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题