You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright下载浏览器二进制文件时遇UNABLE_TO_GET_ISSUER_CERT_LOCALLY错误求助

解决Playwright Java下载浏览器时的UNABLE_TO_GET_ISSUER_CERT_LOCALLY错误

问题背景

公司Windows 11笔记本上,使用Java 1.8.0_421 + Playwright v1.45首次运行代码时,下载Chromium二进制文件触发SSL证书错误,已配置代理但无效。

解决方案

1. 导入公司根CA证书到Java信任库

Java使用独立的证书信任库,公司环境的自定义CA证书需要手动导入:

  • 找到JRE目录下的cacerts文件,路径示例:C:\Program Files\Java\jdk1.8.0_421\jre\lib\security\cacerts
  • 执行keytool命令导入证书(替换company-root.cer为你的公司根证书路径):
keytool -importcert -file company-root.cer -alias company-root -keystore "C:\Program Files\Java\jdk1.8.0_421\jre\lib\security\cacerts"
  • 默认信任库密码为changeit,按提示确认导入操作。

2. 设置Node.js额外证书环境变量

Playwright底层依赖Node.js,通过环境变量指定信任的CA证书:

  • 临时设置(命令行运行程序前执行):
set NODE_EXTRA_CA_CERTS=C:\path\to\company-root.cer
  • 永久设置:打开「系统属性→高级→环境变量」,添加系统变量NODE_EXTRA_CA_CERTS,值为公司根证书的绝对路径。

3. 手动下载浏览器二进制并指定路径

如果证书配置仍无效,手动下载对应版本的Chromium:

  • 从错误日志中的链接下载(如https://playwright.azureedge.net/builds/chromium/1124/chromium-win64.zip),用公司浏览器下载可绕过证书问题;
  • 解压到本地目录,比如C:\playwright-browsers\chromium-1124;
  • 修改代码指定浏览器路径:
import com.microsoft.playwright.*;

public class Trial {
    public static void main(String[] args) {
        try (Playwright playwright = Playwright.create()) {
            Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions()
                .setExecutablePath(java.nio.file.Paths.get("C:\\playwright-browsers\\chromium-1124\\chrome-win\\chrome.exe")));
            Page page = browser.newPage();
            page.navigate("http://playwright.dev");
            System.out.println(page.title());
        }
    }
}

4. 完善代理配置

确保HTTPS代理也正确配置,添加到代码开头:

public class Trial {
    public static void main(String[] args) {
        // 设置HTTPS代理
        System.setProperty("https.proxyHost", "你的代理地址");
        System.setProperty("https.proxyPort", "你的代理端口");
        // 若需认证,添加以下两行
        // System.setProperty("https.proxyUser", "用户名");
        // System.setProperty("https.proxyPassword", "密码");
        
        try (Playwright playwright = Playwright.create()) {
            // ... 原有代码
        }
    }
}

内容的提问来源于stack exchange,提问作者user22629164

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 06:37:02