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

如何在Spring Boot应用中接入cpd4j 6.1.0 API并配置Docker Chrome

解决方案:用cpd4j连接Docker中运行的远程Chrome

核心误区纠正

browserExecutablePath()方法是用来指定本地Chrome可执行文件路径的,不是用来配置远程调试地址的。要连接Docker中已启动并开启远程调试的Chrome,需要使用cpd4j的远程连接API,而非指定可执行文件路径。


一、在cpd4j 3.0.15中连接远程Chrome

  1. 确认Docker Chrome的启动参数
    启动Chrome容器时必须添加远程调试参数,示例命令:
    docker run -p 9222:9222 --rm chromium/chromium --no-sandbox --remote-debugging-port=9222
    
  2. Spring Boot中实现连接代码
    通过cpd4j的API获取远程调试目标并创建会话:
    import io.webfolder.cdp.Launcher;
    import io.webfolder.cdp.session.Session;
    import io.webfolder.cdp.session.SessionFactory;
    
    @Service
    public class RemoteChromeService {
        public void runRemoteChromeTask() {
            Launcher launcher = new Launcher();
            try {
                // 获取远程Chrome的调试目标WebSocket地址
                String wsDebugUrl = launcher.getTargets("http://localhost:9222").get(0).getWebSocketDebuggerUrl();
                // 创建会话并执行操作
                try (SessionFactory factory = launcher.createSessionFactory();
                     Session session = factory.create(wsDebugUrl)) {
                    session.navigate("https://example.com");
                    session.waitDocumentReady();
                    // 这里添加你的业务逻辑,比如抓取页面内容、执行JS等
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                launcher.close();
            }
        }
    }
    

二、cpd4j 6.1.0的Jar包获取与配置

  1. Maven依赖配置
    6.1.0版本已同步到Maven Central,直接在pom.xml中添加:
    <dependency>
        <groupId>io.webfolder</groupId>
        <artifactId>cdp4j</artifactId>
        <version>6.1.0</version>
    </dependency>
    
  2. 6.x版本连接远程Chrome的代码
    API逻辑和3.x版本基本一致,仅部分细节调整:
    import io.webfolder.cdp.Launcher;
    import io.webfolder.cdp.session.Session;
    import io.webfolder.cdp.session.SessionFactory;
    
    public class ChromeRemoteDemo {
        public static void main(String[] args) {
            Launcher launcher = new Launcher();
            try {
                String wsUrl = launcher.getTargets("http://localhost:9222").get(0).getWebSocketDebuggerUrl();
                try (SessionFactory factory = launcher.createSessionFactory();
                     Session session = factory.create(wsUrl)) {
                    session.navigate("https://example.com");
                    session.waitDocumentReady();
                    // 业务逻辑实现
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                launcher.close();
            }
        }
    }
    
    6.x版本中browserExecutablePath()仅用于启动本地Chrome,示例:
    Options options = Options.builder()
                            .browserExecutablePath("/usr/bin/google-chrome")
                            .build();
    Launcher launcher = new Launcher(options);
    

三、常见问题排查

  • 若无法获取远程目标,先在浏览器访问http://localhost:9222,能看到调试目标列表则说明Docker端口映射和Chrome启动参数正常。
  • 若Maven拉取不到6.1.0版本,检查本地Maven镜像源是否同步Maven Central,或手动从官方仓库下载Jar包导入项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:20:27