Lightpanda:一次跑100个JS页面只要123MB的无头浏览器
2026/9/21 1:26:05 网站建设 项目流程

Lightpanda:一次跑100个JS页面只要123MB的无头浏览器

【免费下载链接】browserLightpanda: the headless browser designed for AI and automation项目地址: https://gitcode.com/GitHub_Trending/browser32/browser

你的爬虫集群还在用 headless Chrome 渲染 JS 页面吗?官方基准里它跑 100 个页面峰值内存 2GB。Lightpanda 是一款用 Zig 从零写成的无头浏览器,面向服务器端 JavaScript 渲染和 AI 代理,同样 100 个页面峰值内存只要 123MB。

Lightpanda 跟 headless Chrome 差在哪

AJAX、单页应用、无限加载、即时搜索——今天大部分网页的正文要等 JS 跑完才存在,单纯发 HTTP 请求拿回来的 HTML 经常是个空壳。渲染是绕不开的,而 headless Chrome 是标准答案,只是贵:一个 16GB 的节点按每页约 20MB 算只能扛 800 个并发页面,镜像还带着整副桌面浏览器要装的依赖。

Lightpanda 的选择是不 fork Chromium 也不打 WebKit 补丁,而是用 Zig 从零搭一个无头浏览器。它最核心的一个设计决策就一句话:砍掉图形渲染层,只保留网络请求、DOM 树、V8 JS 引擎和架在上面的 Web API。无头场景永远碰不到的部分,一行都不带。

官方在 AWS EC2 m5.large 上请求 933 个真实网页测出的对比(取 100 页口径):

你的场景headless ChromeLightpanda
批量渲染 100 个真实页面峰值内存 2GB峰值内存 123MB,约省 16 倍
批量抓取 100 个页面46 秒5 秒,约快 9 倍
摊到每个页面约 20MB/页约 1.2MB/页

最后一行由前两行直接推得。另外说明白边界:官方状态仍是 Beta,CORS 还没实现,个别站点会报错,后文所有内容都建立在这个前提上。

5 分钟跑通第一个 JS 页面

安装二选一,macOS/Linux 都能跑:

brew install lightpanda-io/browser/lightpanda # Homebrew 通道 # 或 Docker:docker run -d -p 127.0.0.1:9222:9222 lightpanda/browser:nightly ./lightpanda version # 看到版本号即安装成功

然后抓第一页:

./lightpanda fetch --obey-robots --dump html --log-level info \ https://demo-browser.lightpanda.io/campfire-commerce/

跑通后你应该看到终端直接打印出页面执行 JS 之后的 HTML 文本,JS 渲染出来的内容就在里面。把--dump html换成--dump markdown得到 Markdown 版;--wait-selector--wait-ms--wait-script让你自己决定"什么时候再拍照"。

无头浏览器 Lightpanda 能干什么:三个马上能用的任务

让现有 Puppeteer 脚本改连它的 CDP 服务

serve模式暴露标准 CDP 协议,存量 Puppeteer 脚本只需改连接地址,其余不动:

import puppeteer from 'puppeteer-core'; const browser = await puppeteer.connect({ browserWSEndpoint: "ws://127.0.0.1:9222", // 指向 Lightpanda }); const page = await (await browser.createBrowserContext()).newPage(); await page.goto("https://example.com", { waitUntil: "networkidle0" });

边界提醒:CORS 支持在官方 TODO 里还没打勾,页面里的跨源请求行为和真浏览器可能有差异,换库前先拿自己的用例集回归一遍。

用自然语言直接驱动浏览器:agent 模式

./lightpanda agent --task "Hacker News 头条是什么?" ./lightpanda run session.js # 重放录好的脚本,不再调 LLM、零 token

agent 与浏览器同进程运行,每次工具调用都是直接操作;会话产物可以/save成普通 JS 脚本(PandaScript)存下来,生产重放时确定性的、不花模型调用。边界:要配 Anthropic、OpenAI 等任一 LLM 的 API key;--no-llm只进手动 REPL。

一个进程对外服务多个 agent:MCP 服务

lightpanda mcp --port 9223 # HTTP 模式,每个连接独立会话

每个 JSON-RPC 连接拿到自己独立的页面、Cookie 和内存,多个 agent 互不串页;发同一个Mcp-Session-Id又能让几个 agent 共享一个浏览上下文。边界:stdio 模式是单会话,多租户隔离只有 HTTP 模式支持。

一个值得深看的设计决策:预嵌入 V8 快照

它做了什么:Lightpanda 支持在发布前构建 V8 快照。默认每次进程启动都要现建快照,而你可以用zig build snapshot_creator -- src/snapshot.bin生成一次,再用-Dsnapshot_path=...嵌进二进制。生成入口在 src/main_snapshot_creator.zig,序列化逻辑在 src/browser/js/Snapshot.zig。

为什么这样选:一个崭新的 V8 isolate 要先搭好运行时环境、再把 document、fetch、EventTarget 这些几百个 Web API 对象逐个绑定,才跑得动你的第一行 JS。快照把这整段"从零搭好"的结果冻结成字节,启动时只做一次反序列化,不重做搭建。

可感知的收益:冷启动不再付"引擎初始化 + API 绑定"这笔钱,新页面起步时间更稳;"一次开 100 页"这类并发场景里,每页都省掉一遍重复的 CPU 开销。

顺带一提,orderfile/ 里还放了一份链接器脚本,把热点函数挪到二进制前部,官方实测同一 CDP 基准下 VmHWM 从 28.2MB 降到 25.3MB,运行时行为不变。

谁在用:三个落地场景长什么样

低内存网页抓取。日均两千万商品页的比价系统爬虫集群。之前:headless Chrome 一个 16GB 节点按 20MB/页算只放得下约 800 个并发页面,超出就排队。换掉之后:约 1.2MB/页,同节点并发上限抬到约 1.3 万,100 页批量耗时从 46 秒压到 5 秒。

自动化测试。每天上千条用例的 SaaS 团队 E2E 套件。之前:CI 镜像装 headless Chrome 及其系统依赖,每批用例开浏览器起步就慢。换掉之后:一个二进制加预构建 V8,100 页规模的测试批次从 46 秒到 5 秒,CI 里不再需要渲染栈。

多租户 AI agent 平台。之前:每个 agent 独占一个 headless Chrome,N 个 agent 就是 N 份 GB 级内存,规模一涨就 OOM。换掉之后:一个 Lightpanda 进程对外挂 MCP,会话级隔离,agent 的点击、填表都是进程内直调,省掉浏览器间的通信开销。

官方状态仍是 Beta:CORS 未实现,部分网站会报错或崩溃,遇到就提 issue。给生产管线的话就一句——先拿你真实的页面清单在 staging 环境跑一周压测,把 DOM 完整度和内存曲线跟现有 Chrome 管线逐项对比,再决定要不要换。

【免费下载链接】browserLightpanda: the headless browser designed for AI and automation项目地址: https://gitcode.com/GitHub_Trending/browser32/browser

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询