OpenClaw 浏览器自动化测试的那些坑(一):Linux Snap 版本的 Chromium 无法使用托管模式

OpenClaw 浏览器自动化测试的那些坑(一):Linux Snap 版本的 Chromium 无法使用托管模式

本文记录了在 Linux 服务器上配置 OpenClaw 浏览器自动化功能时,遇到的 Snap 版本 Chromium 无法使用托管模式的坑及解决方案

前言

在部署 OpenClaw AI 助手时,浏览器自动化功能是一个非常强大的特性。它能让 AI 拥有"眼睛"和"双手",实现网页自动化操控。然而,在 Ubuntu 24.04 服务器上配置这个功能时,却遇到一个意想不到的坑------Snap 版本的 Chromium 无法使用托管模式。

问题现象

在腾讯云 Ubuntu 24.04 LTS 服务器上部署 OpenClaw 后,尝试通过 AI 打开网页时遇到错误:

复制代码
我无法访问浏览器控制服务。请先启动 OpenClaw 网关...

检查浏览器服务状态:

bash 复制代码
openclaw browser status

输出显示:

yaml 复制代码
profile: openclaw
enabled: true
running: false
cdpReady: false
detectedBrowser: Chromium
detectedPath: /usr/bin/chromium-browser

尝试手动启动浏览器:

bash 复制代码
openclaw browser start

依然报错:

复制代码
Error: Browser attachOnly is enabled and profile "openclaw" is not running.

根因分析

Ubuntu 24.04 的 Chromium 其实是 Snap 版本

执行以下命令验证:

bash 复制代码
file /usr/bin/chromium-browser

输出:

复制代码
/usr/bin/chromium-browser: POSIX shell script, ASCII text executable

原来 chromium-browser 只是一个 shell 脚本,用于启动 Snap 容器中的 Chromium!

为什么 Snap 版本无法工作?

Snap 是一种沙盒化的包管理系统,Snap 版本的 Chromium 运行在独立的沙盒环境中,有以下限制:

  1. CDP 端口无法暴露:OpenClaw 需要通过 Chrome DevTools Protocol (CDP) 控制浏览器,但 Snap 版本的 Chromium 由于安全隔离,无法将 CDP 端口映射到主机
  2. 沙盒限制:Snap 应用的沙盒机制会阻止外部进程对浏览器进行控制
  3. 存根程序/usr/bin/chromium-browser 只是一个启动器,真正的浏览器在 Snap 容器的另一端

这导致 OpenClaw 的托管模式(managed mode)完全无法使用,因为 OpenClaw 需要直接启动和控制浏览器进程。

解决方案

方案一:安装官方 Google Chrome(推荐)

这是最直接有效的解决方案。

1. 下载安装包
bash 复制代码
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
2. 安装 Chrome
bash 复制代码
sudo dpkg -i google-chrome-stable_current_amd64.deb

如果遇到依赖问题,执行:

bash 复制代码
sudo apt --fix-broken install -y
3. 验证安装
bash 复制代码
which google-chrome-stable
# 输出:/usr/bin/google-chrome-stable

google-chrome-stable --version
# 输出:Google Chrome 144.0.7559.132

方案二:安装系统级的 Chromium(通过仓库)

如果不希望安装 Google Chrome,可以添加 Debian/Untrusted 仓库:

bash 复制代码
sudo apt update
sudo apt install chromium

注意:Ubuntu 24.04 默认仓库中的 chromium 依然是 Snap 版本,需要使用 Debian 的仓库。

配置 OpenClaw

编辑 OpenClaw 配置文件,指定 Chrome 可执行文件路径:

bash 复制代码
nano ~/.openclaw/openclaw.json

添加或修改 browser 配置段:

json 复制代码
{
  "browser": {
    "enabled": true,
    "executablePath": "/usr/bin/google-chrome-stable",
    "headless": true,
    "noSandbox": true,
    "attachOnly": false,
    "defaultProfile": "openclaw"
  }
}

配置项说明

配置项 说明
enabled true 启用浏览器功能
executablePath /usr/bin/google-chrome-stable 指定 Chrome 路径,避免使用 Snap 版
headless true 无头模式,服务器环境必须开启
noSandbox true 禁用沙盒,服务器环境需要
attachOnly false 允许 OpenClaw 自动启动浏览器
defaultProfile openclaw 使用托管模式

重启服务

bash 复制代码
openclaw gateway restart

验证测试

检查浏览器状态

bash 复制代码
openclaw browser status

正确输出:

yaml 复制代码
profile: openclaw
enabled: true
running: true
cdpReady: true
detectedBrowser: custom
detectedPath: /usr/bin/google-chrome-stable

测试打开网页

bash 复制代码
openclaw browser open https://www.baidu.com

测试截图

bash 复制代码
openclaw browser screenshot

输出:

复制代码
MEDIA:~/.openclaw/media/browser/xxx.png

常见问题排查

问题 1:attachOnly 模式

如果遇到错误:

复制代码
Error: Browser attachOnly is enabled and profile "openclaw" is not running.

说明配置文件中 attachOnly 设置为 true。需要将其改为 false 或删除该字段,让 OpenClaw 能够自动启动浏览器。

问题 2:中文显示为方块

如果截图中的中文显示为 □□□,需要安装中文字体:

bash 复制代码
sudo apt install -y fonts-noto-cjk fonts-wqy-zenhei

问题 3:配置文件字段错误

如果重启时报错:

复制代码
Invalid config: browser: Unrecognized key: "mode"

说明使用了不存在的字段。查阅官方文档,使用正确的配置字段。

总结

Ubuntu 24.04 默认的 Chromium 是 Snap 版本,由于沙盒隔离和 CDP 端口无法暴露的原因,无法在 OpenClaw 的托管模式下工作。解决方案是安装官方的 Google Chrome 或系统级的 Chromium,并在配置文件中指定正确的可执行文件路径。

这个问题的根本原因在于 Snap 应用的沙盒化设计与传统浏览器控制需求的冲突。在服务器环境下,选择非 Snap 版本的浏览器是确保功能正常的关键。


系列文章预告

  • OpenClaw 浏览器自动化测试的那些坑(二):计划中
  • OpenClaw 浏览器自动化测试的那些坑(三):计划中

如果你觉得这篇文章对你有帮助,欢迎点赞、收藏!

本文记录于 2026 年 2 月,基于 OpenClaw v2026.2.13 版本

相关推荐
肾透侧视攻城狮1 小时前
《掌握 tf.data API:从 Dataset 创建、map/batch/shuffle 操作到预取/缓存优化的完整实战》
人工智能·深度学习·tensorflow·tf.data api·dataset 对象·map/batch/shuff·预取/并行化/缓存机制
大模型任我行2 小时前
百度:动态偏好选择提升LLM对齐稳定性
人工智能·语言模型·自然语言处理·论文笔记
A尘埃2 小时前
深度学习框架:Keras
人工智能·深度学习·keras
回眸&啤酒鸭2 小时前
【回眸】AI新鲜事(五)——2026按照自己的理想型培养自己
人工智能
AI周红伟2 小时前
周红伟:智能体构建实操:OpenClaw + Agent Skills + Seedance + RAG 案例实操
大数据·人工智能·大模型·智能体
海兰2 小时前
Elastic Stack 9.3.0 日志异常检测
人工智能
Tangcan-2 小时前
在Ubuntu 22.04上安装redis
linux·redis·ubuntu
枷锁—sha2 小时前
【CTFshow-pwn系列】03_栈溢出【pwn 046】详解:Ret2Libc 之 64位动态泄露
服务器·网络·安全·网络安全·系统安全
麦德泽特2 小时前
STM32与Linux的无缝协作:通过USB CDC/VCP实现高效数据交互
linux·stm32·单片机·嵌入式硬件·安全