Playwright 无头浏览器部署

一、问题背景

在 Ubuntu 服务器(最小化镜像)中运行:

1
bash node playwright-simple.js

出现错误:
error while loading shared libraries: libatk-1.0.so.0: cannot open shared object file
browserType.launch: Target page, context or browser has been closed

二、问题原因

1️⃣ 本质原因

Chromium 运行依赖系统图形库,但服务器为最小化安装,缺少必要动态库。

报错核心:

libatk-1.0.so.0 not found

说明系统缺少 GTK/ATK 相关组件。


三、解决方案

方案一(推荐)

npx playwright install-deps

自动安装 Playwright 所需依赖。


方案二(手动安装依赖)

Ubuntu / Debian 系统:

apt update apt install -y \ libatk1.0-0 \ libatk-bridge2.0-0 \ libcups2 \ libxkbcommon0 \ libxcomposite1 \ libxdamage1 \ libxfixes3 \ libxrandr2 \ libgbm1 \ libasound2 \ libpangocairo-1.0-0 \ libgtk-3-0

安装完成后重新运行:

node playwright-simple.js


四、最终运行成功结果

成功输出:

🚀 启动 Playwright 无头浏览器... 📄 访问测试页面... ✅ 页面标题: Example Domain 📄 页面 URL: https://example.com/ 📝 页面内容长度: 528 字符 ✅ 测试完成!

说明:

  • Chromium 正常启动

  • 网络访问正常

  • JS 执行正常

  • Playwright 环境完整


五、服务器资源情况分析

执行:

free -h

结果:

Mem: 1.9Gi total 1.1Gi used 152Mi free 918Mi buff/cache 792Mi available Swap: 4.0Gi (已使用 529Mi)

结论:

  • 可用内存约 792MB

  • 已开始使用 Swap

  • 适合单实例自动化

  • 不适合高并发浏览器任务


六、htop 说明

截图界面为:

htop

功能:

  • 实时查看 CPU

  • 查看内存使用

  • 查看进程占用

  • 可直接杀进程

退出方式:

q

F10


七、什么是无头浏览器?

定义

无头浏览器 = 没有图形界面的完整浏览器

特点:

  • 解析 HTML

  • 执行 JavaScript

  • 渲染 DOM

  • 发送网络请求

  • 支持 Web API

  • 支持 React / Vue 等框架

只是没有可视窗口。


八、Playwright 工作原理

架构:

Node.js → Chromium → DevTools Protocol

流程:

  1. 启动 Chromium

  2. 建立 CDP 调试连接

  3. 发送控制指令

  4. 浏览器执行操作

  5. 返回执行结果


九、为什么需要安装大量依赖?

即使是 headless 模式,Chromium 仍然需要:

  • GTK(图形库)

  • ATK(辅助功能库)

  • Pango(字体排版)

  • X11 组件

  • 音频库

  • 安全沙盒组件

原因:

无头 ≠ 精简浏览器
无头 = 完整浏览器 + 不显示界面


十、适用场景

可用于:

  • 自动化登录

  • 抓取动态网页

  • 自动点击与表单提交

  • 生成网页截图

  • 生成 PDF

  • RPA 自动化

  • 数据采集

  • 网页监控


十一、服务器评估

配置:

  • 1.9GB 内存

  • 4GB Swap

适合:

  • 单实例 Playwright

  • 低并发任务

不适合:

  • 多实例并发

  • 大规模自动化调度


十二、优化建议

推荐启动参数:

const browser = await chromium.launch({ headless: true, args: [ '--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', '--disable-gpu' ] });


最终状态

  • Playwright 依赖已补齐

  • Chromium 正常运行

  • 无头浏览器功能完整

  • 服务器资源可支撑单实例运行

  • 环境可用于自动化与数据抓取任务

作者

K.S.J

发布于

2026-02-10

更新于

2026-02-28

许可协议