做AI Agent爬虫的都知道,Headless Chrome是个资源黑洞。随便开几个tab内存就飙到几个G,启动慢,关闭还经常僵尸进程。这周GitHub trending上冒出来一个叫Lightpanda的项目,23K star,号称用Zig从零写的无头浏览器,专门给AI和自动化用。内存占用是Chrome的九分之一,速度快11倍。
吹得这么猛,必须拉下来跑一把。
安装:一个二进制搞定
Lightpanda不需要apt install一堆依赖,直接下载一个107MB的二进制文件就能跑:
curl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-x86_64-linux chmod a+x ./lightpanda
没有npm、没有pip、没有Docker——就一个文件。这点比Playwright和Puppeteer的安装体验好太多了。Mac用户下aarch64-macos版本,Windows需要WSL。
三种模式
Lightpanda支持三种运行方式:
fetch模式:直接抓页面,类似curl但会执行JS
# 输出HTML ./lightpanda fetch --dump html https://example.com # 输出Markdown(对AI友好) ./lightpanda fetch --dump markdown https://example.com # 输出语义树(给Agent用的结构化数据) ./lightpanda fetch --dump semantic_tree_text https://example.com
serve模式:启动CDP server,兼容Puppeteer和Playwright
./lightpanda serve --host 127.0.0.1 --port 9222
mcp模式:作为MCP server接入AI Agent工具链
./lightpanda mcp
MCP模式是最有意思的——直接把浏览器变成AI Agent的工具,不需要自己写胶水代码。
实测:抓取速度对比Chrome Headless
测试环境:Ubuntu 22.04,x86_64,同一台机器跑两个浏览器,四个不同URL分别测速。
| URL | Lightpanda | Chrome Headless | 倍率 |
|---|---|---|---|
| example.com | 870ms | 3270ms | 3.8x |
| httpbin.org/html | 1338ms | 2778ms | 2.1x |
| jsonplaceholder.typicode.com | 3651ms | 6215ms | 1.7x |
| github.com/trending | 4183ms | 11814ms | 2.8x |
简单页面快3-4倍,复杂页面也能快2倍左右。Chrome每次启动要加载一整个Chromium运行时,Lightpanda直接进入工作状态。
内存:差距最夸张的地方
同样抓example.com,看两边的RSS内存占用:
| 浏览器 | RSS内存 |
|---|---|
| Lightpanda | 20MB |
| Chrome Headless | 191MB |
9.5倍的差距。这意味着同一台8G内存的机器,Chrome能跑40个并发页面,Lightpanda理论上能跑400个。对于需要大规模爬取的AI训练数据场景,这个差距直接决定你要买多少台服务器。
semantic_tree:给AI Agent准备的杀手级功能
Lightpanda的semantic_tree_text输出模式值得单独说。普通的HTML dump给AI看太啰嗦,Markdown又丢失了交互元素信息。semantic_tree把页面转成这样的结构:
1 RootWebArea 'Example Domain' 5 heading 'Example Domain' 6 paragraph 7 'This domain is for use in documentation examples...' 8 paragraph 9 link 'Learn more'
每个DOM节点有唯一编号和角色标注(heading、link、button、paragraph),AI Agent可以直接通过编号操作页面元素。GitHub首页的semantic_tree输出,能清晰地标出每个导航按钮、链接和内容区域,比截图+多模态识别的方案靠谱得多。
配合--strip_mode full还能去掉所有JS、CSS、图片等噪音,只保留纯内容和交互元素。给LLM的上下文窗口省token。
CDP兼容:现有Puppeteer脚本可以直接迁移
Lightpanda的serve模式实现了Chrome DevTools Protocol,现有的Puppeteer脚本几乎不用改。实测用puppeteer-core连接:
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://example.com', {waitUntil: "load"});
const title = await page.title();
console.log(title); // "Example Domain"
const links = await page.evaluate(() => {
return Array.from(document.querySelectorAll('a')).map(a => ({
text: a.textContent,
href: a.href
}));
});
await page.close();
await browser.disconnect();
724ms完成整个连接-导航-提取-断开的流程。需要注意的是puppeteer.connect()而不是puppeteer.launch(),因为浏览器实例由Lightpanda管理。
踩坑:Beta阶段的现实
测完优点说问题。Lightpanda目前还是Beta,有几个明显的坑:
1. 部分网站会超时
WordPress站点在测试中直接报OperationTimedout。原因是Lightpanda的Web API实现还不完整,碰到某些JS特性就卡住了。GitHub这种现代SPA反而没问题。
2. CSS渲染完全没有
Lightpanda不做任何视觉渲染,没有layout引擎。如果你需要截图或者视觉回归测试,它帮不了你。它的定位很明确——只处理DOM和JS,不画画面。
3. Web API覆盖率有限
官方也承认,Web API有几百个,目前只实现了一部分。XHR、Fetch、Cookie、表单这些基础的都有,但Web Workers、WebGL、Service Worker这类就别想了。
4. 没有多tab
CDP server目前每个连接是独立的context,不支持在一个session里开多个tab做跨页面操作。Chrome Extension之类依赖多tab的场景跑不了。
跟Playwright/browser-use怎么选
直接说结论:
用Lightpanda:批量数据采集、AI训练语料爬取、API测试、CI/CD里跑轻量级E2E、作为AI Agent的眼睛看网页内容。尤其是需要控制成本和并发量的场景。
用Chrome/Playwright:需要完整JS兼容性的复杂SPA、需要截图/录屏、需要模拟真实用户交互(拖拽、文件上传)、需要浏览器扩展。
Lightpanda不是要替代Chrome,它的目标很精准——AI时代80%的浏览器自动化场景根本不需要完整的浏览器渲染能力,只需要DOM和JS执行。把这80%的场景做到极致轻量和极致快,就足够了。
前端的视角
从前端架构的角度看,Lightpanda代表了一个趋势:浏览器正在分层。一层是给人看的(Chrome、Safari),一层是给机器用的(Lightpanda、jsdom、happy-dom)。之前jsdom和happy-dom只能跑简单的DOM操作,碰到真实网站基本没戏。Lightpanda用Zig+V8做到了”能跑真实网站的JS但不渲染”的平衡点。
对于正在搭建AI Agent基础设施的团队,建议关注它的MCP模式。浏览器作为Agent的眼睛和手,轻量化是刚需。一个107MB的二进制比几百MB的Chromium部署起来简单太多了。