服务器上同时开几百个网页,Chrome 把内存吃光了?试试把 Puppeteer 脚本接到 Lightpanda 上
先说清楚这东西是什么。“无头浏览器”指没有窗口的浏览器,程序用它打开网页、执行页面里的 JavaScript,再把内容取出来。Lightpanda 的仓库是 lightpanda-io/browser,写 README 时已有约 4.15 万星。它不是 Chromium 的改版,也没有图形渲染引擎,所以不能当普通浏览器上网,也不能截真正的网页截图。
01官方给的对比数字
README 里的基准是在一台 AWS EC2 m5.large 上请求 933 个真实网页,取其中 100 页比较:Lightpanda 内存峰值 123MB、用时 5 秒;headless Chrome 约 2GB、46 秒,分别约 16 倍和 9 倍的差距。这是项目方自己的测试,环境和页面不同,结果会变,当成数量级参考就好。
02装之前先看系统
官方提供 Linux 和 macOS 的二进制(x86_64、aarch64),Windows 没有原生版本,要在 WSL2 里装。Linux 版需要 glibc:x86_64 要 2.35 以上,arm64 要 2.38 以上,所以 Alpine 这类 musl 系统会报 “cannot execute: required file not found”,Docker 里选 ubuntu:24.04 或 debian:trixie-slim。安卓 Termux 也不行。
最省事的是 Docker,下面这条会拉官方镜像,并把 9222 端口只开放给本机:
docker run -d --name lightpanda -p 127.0.0.1:9222:9222 lightpanda/browser:latest
不想用 Docker,macOS 可以 brew install lightpanda-io/browser/lightpanda,或者从 nightly 发布页下载二进制,chmod a+x 后运行 ./lightpanda version 确认能跑。注意官方给的都是 nightly(每日构建)版本。
03最快的用法:把一个网页变成 Markdown
不写任何代码,直接让它抓页面。下面的命令抓官方的演示页并输出 Markdown,适合喂给大模型;把 markdown 换成 html 就输出网页源码:
./lightpanda fetch --obey-robots --dump markdown https://demo-browser.lightpanda.io/campfire-commerce/
--obey-robots 表示遵守网站的 robots.txt。页面是慢慢加载出来的话,可以加 --wait-ms、--wait-selector 等参数多等一会。
04把现有的 Puppeteer 脚本接过来
已经有 Puppeteer 或 Playwright 脚本的人,不用重写。先启动 Lightpanda 的 CDP 服务(CDP 是 Chrome 开发者协议,这些自动化工具就是用它遥控浏览器的):
./lightpanda serve --obey-robots --host 127.0.0.1 --port 9222
然后把脚本里原来的 puppeteer.launch() 换成 puppeteer.connect(),指向这个地址,其余代码照旧:
import puppeteer from 'puppeteer-core';
const browser = await puppeteer.connect({
browserWSEndpoint: "ws://127.0.0.1:9222",
});
const context = await browser.createBrowserContext();
const page = await context.newPage();
await page.goto('https://demo-browser.lightpanda.io/amiibo/', { waitUntil: "networkidle0" });
const links = await page.evaluate(() =>
Array.from(document.querySelectorAll('a')).map(a => a.getAttribute('href'))
);
console.log(links);
await page.close();
await context.close();
await browser.disconnect();这段代码来自官方 README 的示例,我没有运行过。涉及点击、填表、Cookie、代理和网络拦截的功能 README 里列为已实现,但它自己也说是在逐步补全网页标准,复杂网站有可能遇到不支持的接口。想知道兼容到什么程度,看官方每天更新的 Web Platform Tests 结果。
05给 AI 代理直接用:MCP 模式
Claude Code、Cursor 这类工具如果支持 MCP,可以把 Lightpanda 当成浏览器工具接上。在 MCP 配置里加一段,路径换成你放二进制的位置:
{
"mcpServers": {
"lightpanda": {
"command": "/path/to/lightpanda",
"args": ["mcp"]
}
}
}多个代理共用一个进程时,可以用 lightpanda mcp --port 9223 走 HTTP,每个连接有自己独立的页面和 Cookie。README 还提到 lightpanda agent 命令:用一句话描述任务,它自己操作网页,并能把过程导出成 PandaScript(一种带浏览器指令的 JavaScript)脚本,之后不用大模型也能重放。这一块我只据文档介绍,没有展开。
06用之前要知道的三件事
- 许可证是 AGPL-3.0:自己内部用没问题,但要把它改了再作为网络服务提供给别人,需要公开修改后的源码。商用前建议看一眼仓库里的 LICENSING.md。
- 默认会发送使用统计。不想发,设置环境变量 LIGHTPANDA_DISABLE_TELEMETRY=true。
- 只有文本级渲染:
--dump png给的是“纯文字渲染”,要做视觉截图或依赖复杂渲染的网页,还是得用 Chrome。
步骤依据官方 README 整理,核对于 2026-11-07。


DeepSeek
Hy-Memory
Timestral