基本原理
核心思路很简单:VPS 上跑一个 headless Chrome 实例,通过 CDP 暴露调试端口,再用 SSH 隧道把这个端口转发到本地。你在本地 Chrome 的 chrome://inspect 页面就能看到远端浏览器的页面,像操作本地浏览器一样完成登录。登录产生的 Cookies 和 LocalStorage 会自动保存在 VPS 的 profile 目录里,后续 Moltbot 等自动化工具直接读取这个目录,就能继承已验证的浏览器身份。
这种方式完全不依赖图形界面,适用于任何 Ubuntu VPS 环境。
操作步骤
确认调试端口状态:在 VPS 上执行
ss -ltnp | grep 18800,确认端口正在监听。如果没有,执行moltbot restart重启服务。建立 SSH 端口转发:在本地终端执行:
ssh -L 18800:127.0.0.1:18800 root@服务器IP这个窗口需要保持打开状态,关掉隧道就断了。
在本地浏览器接管远端实例:打开本地 Chrome,地址栏输入
chrome://inspect。进入 Settings,勾选 Discover network targets,然后在 Configure 中添加localhost:18800。手动完成登录:在 Inspect 列表中找到目标页面,点击 inspect。弹出的窗口就是远端浏览器的实时画面,在这里完成账号登录、扫码或验证码操作即可。
需要注意的是,部分安全要求较高的网站(比如 Google)可能无法通过这种方式登录,这是 CDP 环境本身的限制。
数据持久化
登录成功后,身份数据会自动写入配置文件指定的 profile 目录。只要满足两个条件——不更改 defaultProfile 名称、不手动清空该目录——Moltbot 在后续的自动化运行中就会持续调用这份数据,无需重复登录。
这个设计很实用,相当于把「人工登录」和「机器执行」干净地解耦了。
常见问题排查
- Inspect 界面看不到目标:大概率是 SSH 隧道断了。重新执行端口转发命令,同时核对本地端口和服务器端口配置是否一致。
- 窗口无法正常渲染:确认本地用的是 Chrome 或 Edge 等 Chromium 内核浏览器,Firefox 不支持
chrome://inspect。 - 登录态突然失效:检查配置文件是否被重置,或者 VPS 上的 profile 存储路径是否被意外修改。
延伸思考
这套方案的价值不仅限于 Moltbot。任何需要在 headless 环境下维护浏览器登录态的自动化场景——比如定时抓取、社交媒体发布、网页监控——都可以复用同样的 CDP + SSH 隧道思路。如果你同时管理多个账号,可以为每个账号建立独立的 profile 目录,互不干扰。把登录这件「不得不手动」的事做一次,剩下的交给 Agent 就好。