Skip to content

fix: 从 HTTP API 动态获取 Chrome WebSocket URL#61

Open
hiweiweiwei-bot wants to merge 2 commits intoeze-is:mainfrom
hiweiweiwei-bot:main
Open

fix: 从 HTTP API 动态获取 Chrome WebSocket URL#61
hiweiweiwei-bot wants to merge 2 commits intoeze-is:mainfrom
hiweiweiwei-bot:main

Conversation

@hiweiweiwei-bot
Copy link
Copy Markdown

问题

Chrome 重启后,DevToolsActivePort 文件中缓存的 wsPath 会过期,导致 CDP Proxy 连接失败,需要手动重启 Proxy。

改动

getWebSocketUrl() 改为异步函数,优先通过 /json/version HTTP API 获取最新的 webSocketDebuggerUrl

  • 每次连接时动态从 Chrome HTTP API 获取 wsUrl,不依赖文件缓存
  • 处理 ws://[::1]ws://127.0.0.1 地址格式差异
  • 原有 wsPath 回退逻辑完整保留,兼容无 HTTP API 的场景

测试

Chrome 重启后无需重启 CDP Proxy,自动重连成功。

🤖 Generated with Claude Code

改用 /json/version HTTP API 获取最新 wsUrl,避免 Chrome 重启后
DevToolsActivePort 文件中的 wsPath 过期导致连接失败;原有 wsPath 回退逻辑保留。

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@eze-is
Copy link
Copy Markdown
Owner

eze-is commented Apr 18, 2026

我想确认问一下,你这边使用chrome的场景是直接使用用户自己在用的这一个浏览器实例呢,还是通过命令行调用了headless chrome?

@hiweiweiwei-bot
Copy link
Copy Markdown
Author

直接使用用户自己正在运行的 Chrome 实例(非 headless),通过 --remote-debugging-port=9222 开启远程调试,CDP Proxy 连接这个已有浏览器。这样可以携带用户的登录态。

这也是这个 fix 的核心场景:用户浏览器重启后,DevToolsActivePort 文件还是旧的 WebSocket URL,所以改成优先从 /json/version HTTP API 实时获取。

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.

2 participants