Back to skills
SkillHub ClubShip Full StackFull StackIntegration

xvfb-chrome

在Linux服务器上使用Chrome浏览器(无头/有头模式)配合xvfb运行,可连接chrome-devtools MCP进行浏览器自动化

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
3,125
Hot score
99
Updated
March 20, 2026
Overall rating
C4.0
Composite score
4.0
Best-practice grade
B77.6

Install command

npx @skill-hub/cli install openclaw-skills-xvfb-chrome

Repository

openclaw/skills

Skill path: skills/codinglink/xvfb-chrome

在Linux服务器上使用Chrome浏览器(无头/有头模式)配合xvfb运行,可连接chrome-devtools MCP进行浏览器自动化

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack, Integration.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: openclaw.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install xvfb-chrome into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/openclaw/skills before adding xvfb-chrome to shared team environments
  • Use xvfb-chrome for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: xvfb-chrome
description: 在Linux服务器上使用Chrome浏览器(无头/有头模式)配合xvfb运行,可连接chrome-devtools MCP进行浏览器自动化
---

# XVFB + Chrome 浏览器自动化

在无GUI的Linux服务器上运行Chrome浏览器的完整指南,支持配合 chrome-devtools MCP 使用。

## 模式选择

| 场景 | 推荐方式 |
|------|----------|
| 快速爬取、截图、自动化脚本 | `--headless=new` (无头) |
| 需要调试/连接DevTools MCP | xvfb-run + 非无头 + `--remote-debugging-port=9222` |
| 需要看到浏览器窗口(VNC截图等) | xvfb-run + 非无头 |

## 启动命令

### 1. 无头模式 (常规自动化)

```bash
google-chrome --headless=new --no-sandbox --disable-gpu --user-data-dir=/tmp/chrome-data
```

### 2. 有头 + xvfb + DevTools (推荐 MCP 用户)

```bash
xvfb-run -a google-chrome --no-sandbox \
  --disable-gpu --remote-debugging-port=9222 \
  --user-data-dir=/tmp/chrome-profile
```

关键点:
- `-a` = 自动分配 display 编号
- 去掉 `--headless` 就是有头模式
- DevTools 监听 `ws://127.0.0.1:9222/devtools/browser/xxx`

### 3. 重启 Chrome (杀旧进程)

```bash
pkill -f "chrome.*remote-debugging-port=9222" 2>/dev/null
sleep 1
xvfb-run -a google-chrome --no-sandbox \
  --disable-gpu --remote-debugging-port=9222 \
  --user-data-dir=/tmp/chrome-profile &
```

## Chrome DevTools MCP 配合使用

MCP server `chrome-devtools` 已安装,连接 `http://127.0.0.1:9222`:

```bash
mcporter list chrome-devtools --schema   # 查看可用工具
mcporter call chrome-devtools.list_pages # 列出页面
```

### 常用 MCP 工具

| 工具 | 功能 |
|------|------|
| `new_page url:"https://xxx"` | 打开新页面 |
| `navigate_page type:"url" url:"https://xxx"` | 导航 |
| `take_screenshot filePath:"/path/xxx.png"` | 截图 |
| `take_snapshot` | 获取页面元素快照 |
| `click uid:"xxx"` | 点击元素 |
| `fill uid:"xxx" value:"xxx"` | 填入表单 |
| `type_text text:"xxx"` | 输入文本 |
| `list_network_requests` | 查看网络请求 |
| `evaluate_script function:"() => { return document.title }"` | 执行JS |

### 完整示例

```bash
# 1. 启动浏览器
xvfb-run -a google-chrome --no-sandbox \
  --disable-gpu --remote-debugging-port=9222 \
  --user-data-dir=/tmp/chrome-profile &

# 2. 检查是否就绪
curl -s http://127.0.0.1:9222/json/version

# 3. 用 MCP 操作
mcporter call chrome-devtools.new_page url:"https://www.baidu.com"
mcporter call chrome-devtools.take_screenshot filePath:"/root/screenshot.png"
```

## 参数解释

| 参数 | 作用 |
|------|------|
| `--headless=new` | 无头模式(不显示窗口) |
| `--remote-debugging-port=9222` | 开启调试端口,供MCP连接 |
| `--no-sandbox` | 跳过沙箱(服务器必加) |
| `--disable-gpu` | 禁用GPU(服务器必加) |
| `--user-data-dir=/tmp/xxx` | 用户数据目录(避免冲突) |
| `-a` (xvfb-run) | 自动分配 display 编号 |
| `DISPLAY=:99` | 指定使用某个 Xvfb 显示编号 |

## 分辨率配置

### 查看当前 Xvfb

```bash
ps aux | grep Xvfb | grep -v grep
```

输出示例:
```
Xvfb :99 -screen 0 1280x720x24
Xvfb :100 -screen 0 640x480x24
```

### 启动指定分辨率的 Xvfb

```bash
# 1280x720 分辨率
Xvfb :99 -screen 0 1280x720x24 -nolisten tcp &

# 1920x1080 分辨率
Xvfb :99 -screen 0 1920x1080x24 -nolisten tcp &
```

### 绑定 Chrome 到指定 Xvfb

```bash
# 方式1:使用 xvfb-run 自动分配
xvfb-run -a google-chrome --no-sandbox ...

# 方式2:手动指定 display 编号
DISPLAY=:99 google-chrome --no-sandbox ...
```

### 常用分辨率

| 分辨率 | 适用场景 |
|--------|----------|
| 640x480 | 轻量爬取、简单截图 |
| 1280x720 (720p) | 常规浏览、推荐配置 |
| 1920x1080 (1080p) | 高清截图、复杂页面 |

### 常用操作

```bash
# 查看当前运行的 Xvfb
ps aux | grep Xvfb | grep -v grep

# 杀掉所有 Chrome 进程
killall chrome

# 杀掉所有 Xvfb
pkill Xvfb

# 重启 Chrome(绑定到 :99)
killall chrome 2>/dev/null
sleep 1
DISPLAY=:99 google-chrome --no-sandbox \
  --disable-gpu --remote-debugging-port=9222 \
  --user-data-dir=/tmp/chrome-profile &
```


---

## Skill Companion Files

> Additional files collected from the skill directory layout.

### _meta.json

```json
{
  "owner": "codinglink",
  "slug": "xvfb-chrome",
  "displayName": "xvfb-chrome",
  "latest": {
    "version": "1.0.2",
    "publishedAt": 1772122206412,
    "commit": "https://github.com/openclaw/skills/commit/152be4ed3a4dcbf2e3e8ca25461aeb33b19b952b"
  },
  "history": []
}

```