Lightpanda 无头浏览器:100 页 5 秒、峰值 123MB,AI 抓网页的轻量方案
【免费下载链接】browserLightpanda: the headless browser designed for AI and automation项目地址: https://gitcode.com/GitHub_Trending/browser32/browser
Lightpanda 是一个从零用 Zig 编写的无头浏览器,服务于 AI 代理与网页抓取自动化;实测 100 页耗时 5 秒、峰值内存 123MB。
Lightpanda 解决什么场景:批量抓取、CI 与 AI 数据预处理
无头自动化的传统路线是 Chrome + Puppeteer,能用,但规模一上来就吃力,典型有三类场景:
- 大规模网页抓取:单个 headless Chrome 实例常驻数百 MB 内存,一台机器开一百个并发实例直接吃满内存。Lightpanda 在 m5.large 上实测 933 个真实网页,100 页峰值内存 123MB,同等任务 headless Chrome 是 2GB。
- CI 流水线跑 E2E:浏览器启动时间和内存占用会直接摊到每个 job 的耗时里。Lightpanda 毫秒级启动,100 页总共 5 秒跑完,headless Chrome 需要 46 秒。
- AI 训练数据预处理:数据需要 JS 执行后的 DOM,纯 HTTP 客户端拿不到;但在服务器上起完整桌面浏览器又太重。
上面两组数字来自项目 README 的基准(AWS EC2 m5.large,933 个真实网页,crawler benchmark):
| 指标(100 页) | Lightpanda | Headless Chrome |
|---|---|---|
| 峰值内存 | 123MB | 2GB |
| 执行耗时 | 5s | 46s |
30 秒跑通 Lightpanda:安装与第一条 fetch 命令
推荐安装方式是直接下载 nightly 二进制(Linux x86_64 文件名为lightpanda-x86_64-linux,在官方项目的 Releases nightly 页面获取;macOS aarch64/x86_64 同样提供)。也支持 Homebrew、AUR 与 Docker 镜像,这里不展开。下载后:
chmod a+x ./lightpanda && ./lightpanda version然后抓取一个页面,输出就是 JS 执行后的 DOM:
./lightpanda fetch --dump html https://example.cominfo(browser): GET https://example.com/ 200 <!DOCTYPE html> <html> <head> <title>Example Domain</title> ...--dump markdown可以直接把页面转成 Markdown;--wait-until、--wait-selector、--wait-script用来控制 SPA 渲染完成后再抓取。
↑ 对 CDP 服务调截图命令得到的就是这张图:没有渲染引擎,就没有像素。
核心能力演示:fetch、Puppeteer 连接与 Agent 模式
一条命令抓取渲染后的 DOM
上面演示过fetch,这里补充两个值得记住的参数:--obey-robots遵守 robots.txt(合规抓取场景),--dump markdown直接产出结构化文本。什么时候你会用到:数据管线里只需要文本或字段,不想为此引入 Node.js 环境。
接上现有的 Puppeteer 脚本
先起 CDP 服务——可以理解为一个走 WebSocket 的远程浏览器控制台:
./lightpanda serve --host 127.0.0.1 --port 9222把现有 Puppeteer 脚本的端点换到这个地址即可:
import puppeteer from 'puppeteer-core'; const browser = await puppeteer.connect({ browserWSEndpoint: 'ws://127.0.0.1:9222', }); const page = await browser.newPage(); await page.goto('https://example.com', { waitUntil: 'networkidle0' }); const links = await page.evaluate(() => Array.from(document.querySelectorAll('a')).map(a => a.href)); console.log(links); await page.close(); await browser.disconnect();什么时候你会用到:你已有一批自动化脚本,只希望把底层浏览器换掉以省内存和机器,CDP 兼容意味着业务代码几乎不用动。
让 AI Agent 操作浏览器
./lightpanda agent --task "总结 example.com 头条新闻"Agent 与浏览器同进程运行,会话结束可用/save导出确定性的 PandaScript,再用lightpanda run <script>.js回放,运行时不依赖 LLM。它也能作为 MCP 服务器挂给你自己的 Agent 框架:
{ "mcpServers": { "lightpanda": { "command": "/path/to/lightpanda", "args": ["mcp"] } } }什么时候你会用到:你在做 AI Agent,需要把浏览当作工具调用;多个 Agent 共用一个进程时,HTTP transport 模式会按会话隔离各自的页面和 cookie。
能力支持状态(完整清单见 README 的 Status 一节):
| 能力 | 状态 | 源码位置 |
|---|---|---|
| DOM 操作、querySelector | ✅ | src/browser/webapi/ |
| Fetch / XHR | ✅ | src/browser/webapi/net/ |
| CDP 服务(Puppeteer/Playwright 接入) | ✅ | src/cdp/ |
| Shadow DOM | ⚠️ 部分 | src/browser/webapi/ShadowRoot.zig |
| CORS / 像素截图 | ❌ | README.md |
底层怎么做的:无渲染引擎架构与 v8/Zig 分工
代码用 Zig 编写,目录结构不绕:
src/ ├── browser/ # DOM、Web API、frame 与事件管理 │ ├── js/ # v8 引擎集成层 │ └── webapi/ # DOM/Event/Net 等 API 实现 ├── cdp/ # CDP 协议服务端 ├── network/ # Libcurl 网络栈与缓存 └── main.zig # 入口,命令行子命令分发没有渲染引擎,页面生命周期止于 DOM 树。Chromium 最大的内存开销在图形渲染与合成管线,无头场景根本用不到。Lightpanda 从一开始就不做这层,代价是截图命令返回占位图(前面那张图),收益是 100 页峰值内存做到 headless Chrome 的约 1/16。核心逻辑见 src/browser/。
v8 跑 JS,Zig 写胶水层。现代网页内容大多由 JS 动态生成,JavaScript 执行去不掉。Lightpanda 直接链接 V8 引擎(src/browser/js/),Zig 侧围绕 v8 的 handle 体系实现 DOM、Event 等 Web API 接口,浏览器逻辑全是原生代码,没有额外的运行时层。
网络栈复用 Libcurl,不重复造轮子。HTTP 请求走 Libcurl(src/network/),内置 robots.txt 门禁、广告过滤和 SQLite 磁盘缓存,这三样恰好是自动化场景的刚需。
适合谁 / 不适合谁:Beta 阶段的边界
⚠️ 项目明确处于 Beta:稳定性与 Web API 覆盖在持续补齐,仍可能遇到报错或崩溃。
- 适合:高并发网页抓取与数据采集,且对机器成本敏感(123MB 峰值 / 100 页)。
- 适合:AI Agent 需要一个轻量浏览工具,CDP 与 MCP 两种接口都已就绪。
- 适合:已有 Puppeteer/Playwright 脚本,想换底层浏览器省内存。
- 不适合:需要像素级截图、布局或视觉回归测试——它完全没有渲染引擎。
- 不适合:目标站点重度依赖 CORS 跨域请求,或依赖 Canvas/WebGL 输出。
- 不适合:核心业务上线且不能容忍偶发崩溃——Beta 阶段你会碰到 API 缺口,出问题需要自己兜底。
生产部署清单:环境、配置与监控指标
- 基础镜像选 glibc 发行版(Debian/Ubuntu):官方 Linux 二进制链接 glibc,musl(Alpine)跑不起来。
- 设置
LIGHTPANDA_DISABLE_TELEMETRY=true关闭默认开启的使用遥测。 - 合规抓取场景加
--obey-robots遵守 robots.txt。 - 压测后设监控阈值:100 页批次峰值内存 < 200MB(实测 123MB),单页加载 < 50ms(实测 100 页 5s)。
- 排查期用
--log-level debug --log-format pretty输出详细日志;生产设置LIGHTPANDA_DISABLE_CORE_DUMP,避免崩溃 core 文件占满磁盘。 - 自定义构建三步走:
git clone https://gitcode.com/GitHub_Trending/browser32/browser cd browser make build # 需要 Zig 0.15.2 与 Rust,依赖清单见 README路线图与参与:Beta 阶段的重心
当前处于 Beta:CORS 跨域机制是 README Status 表里第一优先的未实现项,Web API 覆盖靠 WPT(Web Platform Tests)套件持续度量并补齐,结果每日发布。近期重心在稳定性与 API 缺口修补,而非新特性。
如果你在真实站点上遇到崩溃或"不支持的 API",直接到项目 issue 区提交,附上目标 URL 与复现命令;提代码贡献需要签署 CLA,流程见 CONTRIBUTING.md。
想让一百个抓取实例塞进一台机器,先去跑一遍那条 fetch 命令。
【免费下载链接】browserLightpanda: the headless browser designed for AI and automation项目地址: https://gitcode.com/GitHub_Trending/browser32/browser
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考