Lightpanda 无头浏览器:1/16 内存、9 倍速度跑完 100 页
【免费下载链接】browserLightpanda: the headless browser designed for AI and automation项目地址: https://gitcode.com/GitHub_Trending/browser32/browser
Lightpanda 是一个用 Zig 从零实现的无头浏览器,面向需要大规模跑 JS 页面的轻量无头浏览器 服务器部署场景。官方基准在 AWS EC2 m5.large 上抓 933 个真实网页:100 页执行 5 秒、峰值内存 123MB,约为 Headless Chrome 的 9 倍速度、1/16 内存。团队里有批量采集、CI 自动化或要给 AI Agent 配浏览器的,继续往下看。
能力边界:内置了什么,缺了什么
先澄清两个误解:它不是 Chromium 或 WebKit 的分支,而是用 Zig 重写的独立浏览器;也不是"不能出图的浏览器"——它根本没有图形渲染引擎,--dump png输出的是文本版渲染,不是像素。
| 指标(100 页) | Lightpanda | Headless Chrome |
|---|---|---|
| 峰值内存 | 123 MB | 2 GB |
| 执行时间 | 5 s | 46 s |
- JavaScript 由内置 V8 引擎执行,SPA 路由、XHR、Promise 等标准 Web API 可用,代码在 src/browser/js/;
- 实现了 CDP(Chrome DevTools Protocol)协议,Puppeteer、Playwright 走 WebSocket 地址即可直连;
- HTTP 加载器基于 libcurl,内置代理、网络拦截,
--obey-robots开关可自动遵守 robots.txt; - HTML 解析走 html5ever(Rust 绑定),DOM 树在 src/browser/frame/ 构建;
- 无图形渲染引擎,像素级截图与视觉回归不在能力范围内。
从安装到首次抓取:三步走
# 🍎 macOS:Homebrew 安装最新 nightly brew install lightpanda-io/browser/lightpanda # 🐧 Linux:官方二进制链接 glibc,Alpine 等 musl 系统跑不起来 curl -L -o lightpanda https://gitcode.com/GitHub_Trending/browser32/browser/releases/download/nightly/lightpanda-x86_64-linux && chmod a+x ./lightpanda # 🐳 Docker:CDP 默认监听 9222,绑定 127.0.0.1 docker run -d --name lightpanda -p 127.0.0.1:9222:9222 lightpanda/browser:latestWindows 没有原生二进制,走 WSL2 执行 Linux 步骤,WSL 会自动转发 localhost:9222。
./lightpanda version # 打印版本号即安装成功 ./lightpanda fetch --obey-robots --dump html https://example.com # 执行页面 JS 后输出渲染后的 HTML--dump markdown直接输出 Markdown;--wait-selector、--wait-until、--wait-script用于控制等待动态内容的时机。
三个落地场景
批量抓取 JS 渲染的页面。谁会用:手上几百个 URL、内容由 JS 渲染、不想常驻浏览器进程的数据团队。要解决什么:一次性命令拿到渲染后的数据。怎么接:lightpanda fetch加--obey-robots与--wait-selector。接完得到什么:渲染后的 DOM 或 Markdown 文件,进程跑完即退出。
替换 Puppeteer/Playwright 流水线内核。谁会用:自动化脚本已稳定、但单实例开销在 GB 级的团队。要解决什么:实例内存成本。怎么接:serve --host 127.0.0.1 --port 9222起服务,把框架的连接地址指向 CDP WebSocket。接完得到什么:业务代码不动,单实例峰值内存从 GB 级降到百 MB 级(123MB/100 页的基准数据)。
给 AI Agent 配低成本浏览器。谁会用:需要导航、点击、填表单的 Agent 团队。要解决什么:会话隔离与重放成本。怎么接:lightpanda agent直接驱动浏览器,--no-llm进入纯 REPL。接完得到什么:会话内/save导出 PandaScript,用lightpanda run <script>.js回放,确定执行、运行时不再依赖模型。
CDP 接入:把现有 Puppeteer 流水线指向 9222
./lightpanda serve --host 127.0.0.1 --port 9222import puppeteer from 'puppeteer-core'; const browser = await puppeteer.connect({ browserWSEndpoint: "ws://127.0.0.1:9222", });Playwright 同样走 CDP 的 WebSocket 地址接入,脚本其余部分不变。Agent 侧还有另一条路:lightpanda mcp --port 9223以 HTTP 暴露 MCP JSON-RPC,每条连接路由到独立的浏览会话,各带自己的页面、cookie 与内存;stdio 模式则在客户端配置里指向可执行文件并传["mcp"]参数即可。
关键模块速览:源码在哪里
- HTML 解析:src/rust/html5ever/ 里的 html5ever Rust 绑定完成解析,DOM 树由 src/browser/frame/ 构建;
- JS 执行:src/browser/js/ 内嵌 V8,处理 SPA 路由、XHR、Promise;
- 网络层:src/network/HttpClient.zig 基于 libcurl,带代理、拦截与 robots 开关;
- CDP 协议:src/server/cdp/ 按 DOM、网络、运行时等协议域拆分,是 Puppeteer 类客户端的接入入口。
选型判断
要在服务器上铺大量浏览器实例,或流水线的瓶颈是内存和执行时间,Lightpanda 是对的选择:官方基准 100 页 123MB 峰值、5 秒完成(Headless Chrome 为 2GB、46 秒),CDP 入口意味着现有 Puppeteer/Playwright 脚本零改动,make test可在本地先跑一遍单元测试集验证环境。
业务依赖像素级截图、视觉回归或全站兼容性的,不要引入:没有图形渲染引擎是硬约束,项目仍在快速迭代,个别站点报错与崩溃仍会发生。决定是否进生产前,到 README.md 的功能清单与 Web Platform Tests 每日结果里核对兼容性细节。
【免费下载链接】browserLightpanda: the headless browser designed for AI and automation项目地址: https://gitcode.com/GitHub_Trending/browser32/browser
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考