chrome cdp 三种方案对比

发布时间:2026/8/5 13:24:59
chrome cdp 三种方案对比 Chrome CDP 三种场景说明防混淆cdp连接已封装为skill: https://github.com/yangyongyongyong/skills/tree/main/chrome-cdp-ws-daemon本文用于区分 Chrome CDP 的三种常见运行场景避免把“传统--remote-debugging-port模式”和 Chrome 146 新特性chrome://inspect/#remote-debugging勾选Allow remote debugging for this browser instance混为一谈。1. 三种场景总览场景启动方式常见监听地址发现入口连接建议A. 传统命令行模式显式--remote-debugging-port9222常见127.0.0.1:9222也可能含 localhosthttp://host:9222/json/version、/json先/json/version取webSocketDebuggerUrl再连 WSB. 新特性 IPv4chrome://inspect/#remote-debugging勾选 AllowChrome 146127.0.0.1:9222优先DevToolsActivePort先读DevToolsActivePort得 browser WS再做 CDPC. 新特性 IPv6同上Chrome 146[::1]:9222优先DevToolsActivePort先读DevToolsActivePort并兼容 IPv6 URL[::1]2. 关键差异必须记住场景 A 是“命令行显式端口模式”HTTP 发现端点/json*通常可直接使用。场景 B/C 是“Chrome 146 新特性模式”DevToolsActivePort才是权威入口。新特性模式下/json可能不可用、延迟可用或与真实 browser WS 不一致。新特性模式下会出现 IPv4/IPv6 两种监听形态不能写死127.0.0.1。browser WS path/devtools/browser/uuid可能短时过期连接 404 时要支持自恢复。3. 三种场景的连接方式A. 传统命令行模式示例nohup/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\--remote-debugging-port9222\--remote-allow-originshttp://127.0.0.1:9222\--user-data-dir/Users/luca/chrome-profile\/tmp/chrome-cdp.log21注意重要命令行启动时必须指定自定义 profile 路径--user-data-dir/你的路径。不要复用默认 profile如日常 Chrome 用户目录在默认 profile 下Chrome 出于安全策略常导致远程调试端口不可用或行为异常。推荐为自动化/CDP 固定单独目录例如/Users/luca/chrome-profile并与日常浏览器会话隔离。推荐流程访问/json/version获取webSocketDebuggerUrl。连接该 WSbrowser-level。再发Browser.getVersion、Target.getTargets等命令。B/C. Chrome 146 新特性模式inspect 勾选入口chrome://inspect/#remote-debugging勾选Allow remote debugging for this browser instance。推荐流程读取 Chrome 用户目录下DevToolsActivePort。解析端口与 browser ws path。按 host 候选重试连接127.0.0.1-[::1]-localhost。若连接报HTTP 404用同 host/port 的/json/version获取最新webSocketDebuggerUrl并重试一次。4. 实现层面的统一建议给脚本/Agent不要把 host 写死为127.0.0.1。统一支持 host 候选127.0.0.1、::1、localhost。统一做 IPv6 URL 规范化::1组装 URL 时要变成[::1]。如果webSocketDebuggerUrl缺失端口如ws://localhost/devtools/...自动补回当前 CDP 端口。新特性模式优先DevToolsActivePort/json*仅作为探测/修复兜底。5. 快速判定当前属于哪种场景如果是你手工/脚本显式加了--remote-debugging-port启动 Chrome优先按场景 A 处理。如果是从chrome://inspect/#remote-debugging勾选打开按场景 B/C 处理。看到Server running at: [::1]:9222就是新特性 IPv6场景 C。看到Server running at: 127.0.0.1:9222就是新特性 IPv4场景 B。