Files
jackwener__opencli/CDP.zh-CN.md
T
jackwener beda0b714c docs: remove all remaining Playwright references from docs
Updated 6 files:
- CDP.md, CDP.zh-CN.md: Browser Bridge instead of Playwright MCP Bridge
- CLI-ELECTRON.md: Browser Bridge / IPage abstraction wording
- CLI-EXPLORER.md: browser tools instead of Playwright MCP tools
- TESTING.md: Browser Bridge extension mode, removed token references
- src/clis/chatgpt/README{,.zh-CN}.md: CDP instead of Playwright

Zero Playwright references remaining across all .md files.
2026-03-19 16:55:20 +08:00

4.2 KiB
Raw Permalink Blame History

通过 CDP 远程连接 OpenCLI (服务器/无头环境)

如果你无法使用 opencli Browser Bridge 浏览器扩展(例如:在无界面的远程服务器上运行 OpenCLI 时),OpenCLI 提供了备选方案:通过连接 CDP (Chrome DevTools Protocol,即 Chrome 开发者工具协议) 来直接控制本地 Chrome。

出于安全考虑,CDP 默认仅绑定在 localhost 的本地端口。所以,若是想让远程服务器调用本地的 CDP 服务,我们需要依靠一层额外的网络隧道。

本指南将整个过程拆分为三个阶段:

  1. 阶段一:准备工作(在本地启动允许 CDP 调试的 Chrome)。
  2. 阶段二:建立网络隧道(通过 SSH反向隧道 或 反向代理工具,将本地的 CDP 端口暴露给服务器)。
  3. 阶段三:执行命令(在服务器端运行 OpenCLI)。

阶段一:准备工作 (本地电脑)

首先,你需要在你的本地电脑上,通过命令行参数启动一个开启了远程调试端口的 Chrome 实例。

macOS:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
  --remote-debugging-port=9222 \
  --user-data-dir="$HOME/chrome-debug-profile" \
  --remote-allow-origins="*"

Linux:

google-chrome \
  --remote-debugging-port=9222 \
  --user-data-dir="$HOME/chrome-debug-profile" \
  --remote-allow-origins="*"

Windows:

"C:\Program Files\Google\Chrome\Application\chrome.exe" ^
  --remote-debugging-port=9222 ^
  --user-data-dir="%USERPROFILE%\chrome-debug-profile" ^
  --remote-allow-origins="*"

注意:此处增加的 --remote-allow-origins="*" 参数对于较新版本的 Chrome 来说通常是[必需的],以允许来自反向代理(如 ngrok)的跨域 WebSocket 连接请求。

待这个新的浏览器实例打开后,手工登录那些你打算使用的网站(如 bilibili.com、zhihu.com 等),这可以让该浏览器的运行资料(Profile)保留上这些网站登录用的 Cookie。


阶段二:建立网络隧道

现在你的本地已经有了一个监听在 9222 端口的 CDP 服务,接下来,选择以下任意一种方式将其实际暴露给你的远端服务器。

方法 A:SSH 反向端口转发 (推荐)

如果你的本地电脑可以直连远程服务器的 SSH,那么这是最简单且最安全的做法。

在你的 本地电脑 终端上直接运行这条 ssh 命令,将远程服务器的 9222 端口反向映射回本地的 9222 端口:

ssh -R 9222:localhost:9222 your-server-user@your-server-ip

保持此 SSH 会话在后台运行即可。

方法 B:反向代理 / 内网穿透 (ngrok / frp / socat)

如果因为 NAT 或防火墙等因素导致无法直连 SSH 服务器,你可以使用 ngrok 等内网穿透工具。

在 本地电脑 运行 ngrok 将本地的 9222 端口暴露到公网:

ngrok http 9222

此时终端里会打印出一段专属的转发 URL 地址(如:https://abcdef.ngrok.app)。复制这一段 URL 地址备用。


阶段三:执行命令 (远程服务器)

现在,所有的准备工作已结束。请切换到你已安装好 OpenCLI 的 远程服务器 终端上。

根据你在上方阶段二所选择的隧道方案,在终端中配置对应的 OPENCLI_CDP_ENDPOINT 环境变量:

若使用 方法 A (SSH 反向隧道):

export OPENCLI_CDP_ENDPOINT="http://localhost:9222"
opencli doctor                    # 查看并验证连接是否通畅
opencli bilibili hot --limit 5    # 执行目标命令

若使用 方法 B (Ngrok 等反向代理):

# 将刚刚使用 ngrok 得到的地址填入这里
export OPENCLI_CDP_ENDPOINT="https://abcdef.ngrok.app"
opencli doctor                    # 查看并验证连接是否通畅
opencli bilibili hot --limit 5    # 执行目标命令

Tip: 如果你填写的是一个普通 HTTP/HTTPS 的 URL 地址,OpenCLI 会自动尝试抓取该地址下的 /json/version 节点,来动态解析并连接真正底层依赖的 WebSocket 地址。

如果你想在此服务器上永久启用该配置,可以将对应的 export 语句追加进入你的 ~/.bashrc 或 ~/.zshrc 配置文件中。