Skip to content

fix: findFallbackPort returns wsPath to fix CDP WebSocket connection#116

Open
yufengzhou46 wants to merge 1 commit into
eze-is:mainfrom
yufengzhou46:fix/findFallbackPort-return-wsPath
Open

fix: findFallbackPort returns wsPath to fix CDP WebSocket connection#116
yufengzhou46 wants to merge 1 commit into
eze-is:mainfrom
yufengzhou46:fix/findFallbackPort-return-wsPath

Conversation

@yufengzhou46
Copy link
Copy Markdown

问题

当 Chrome 通过 --remote-debugging-port=9222 启动时,findFallbackPort() 能检测到开放端口但只返回端口号。CDP Proxy 随后拼接 WebSocket URL 为 ws://127.0.0.1:9222/devtools/browser(缺少 UUID),Chrome 拒绝此连接。Chrome 要求从 /json/version 获取的完整路径(如 /devtools/browser/<uuid>)。

同时,新版 Chrome(148+)要求 --remote-debugging-port 必须配合 --user-data-dir=<非默认目录> 使用,这使得 DevToolsActivePort 不在 knownBrowsers() 检查的默认路径中,只能走 fallback 路径,从而使此 bug 必然触发。

修复

  • browser-discovery.mjs: findFallbackPort() 现在 fetch /json/version 获取 webSocketDebuggerUrl,从中提取 wsPath,以 {port, wsPath} 结构返回
  • cdp-proxy.mjs: 适配新的 {port, wsPath} 返回值,正确拼接 WebSocket URL
  • check-deps.mjs: 适配新的返回值结构

测试

Node v26.0.0 + Chrome 148 + --remote-debugging-port=9222 --user-data-dir=<custom>
  • CDP Proxy 成功连接 Chrome 调试端口
  • /health 端点返回 connected: true
  • /targets/new/screenshot/eval 等端点正常
  • 向后兼容:当 /json/version 不可用时返回 {port, wsPath: null}

When Chrome is started with --remote-debugging-port=9222, the fallback
path in findFallbackPort() detected the open port but returned only a
port number. The CDP proxy then constructed a WebSocket URL like
ws://127.0.0.1:9222/devtools/browser (without UUID), which Chrome
rejects. Chrome requires the full path (e.g. /devtools/browser/<uuid>)
obtained from /json/version.

Changes:
- findFallbackPort() now fetches /json/version and returns {port, wsPath}
- Updated check-deps.mjs and cdp-proxy.mjs callers to use the new struct

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant