lightpanda-io/browser
开发工具用 Zig 从零编写的无头浏览器,可通过 CDP、WebDriver BiDi 和 MCP 驱动,适合网页抓取与浏览器自动化。
Lightpanda 是用 Zig 从零实现的无头浏览器,并非 Chromium 或 WebKit 的分支,面向需要执行 JavaScript 的爬虫、抓取流水线和自动化 Agent,同时避免完整桌面浏览器的资源开销。它最适合已经用 Puppeteer、Playwright 或 CDP 无头驱动 Chrome、希望保留现有客户端代码但降低每页内存和耗时的场景。
实际工作方式的变化
不再启动 Chrome,而是运行 lightpanda serve,把现有自动化客户端指向它的 WebSocket 端点;README 的 Puppeteer 示例只是改用了 browserWSEndpoint(README)。同一服务可讲 CDP、WebDriver BiDi 或两者同时开启,也可监听 Unix socket 而非 TCP。
单次抓取无需协议:lightpanda fetch 可把页面导出为 HTML、Markdown、PNG、PDF,或输出 JSON-LD/OpenGraph 等结构化数据,并可用定时、选择器或脚本控制等待条件。遵守 robots.txt 是显式 --obey-robots 选项,构建中还包含广告拦截、代理、自定义请求头和网络拦截。
另一项关键机制是页面模型刻意比 Chrome 小:包含 HTML 解析器、DOM、基于 V8 的 JavaScript(XHR 与 Fetch)、Cookie 和点击,但没有图形渲染引擎。资源节省正来源于此。
报告的性能
项目基准在 AWS EC2 m5.large 上通过网络请求 933 个真实页面,报告 100 个页面的峰值内存为 123MB、Chrome 无头模式为 2GB(约少 16 倍),执行时间 5s 对 46s(约快 9 倍)(基准细节)。这是特定爬虫负载下的单次测量,并不保证所有页面加载都如此。
Agent 与 MCP 路径
lightpanda agent 可用自然语言或斜杠命令驱动浏览器,模型可来自 Anthropic、OpenAI、Gemini、Vertex AI、Mistral、Hugging Face、OpenRouter、Vercel AI Gateway、OpenAI 兼容地址,或本地 Ollama/llama.cpp/LLMD(agent 文档)。会话可导出为 PandaScript——带原生浏览器原语的普通 JavaScript——再用 lightpanda run 在运行时无需模型地重放,适合用 LLM 做原型、生产环境跑确定性脚本;--no-llm 则进入普通 REPL。
浏览器还提供 stdio 或 HTTP 形式的 MCP 服务;走 HTTP 时,每个客户端可获得隔离的浏览会话(也可通过相同 Mcp-Session-Id 共享),从而一个进程服务多个 Agent(MCP 指南)。此路径需要支持 MCP 的客户端;CDP 路径需要 Puppeteer/Playwright 类客户端;fetch 则两者都不需要。
要求与限制
二进制以 nightly 形式提供,覆盖 Linux 和 macOS 的 x86_64 与 aarch64,另有 Homebrew、AUR、Nix 和 Docker 镜像(发布页)。Linux 二进制依赖 glibc,Alpine 等 musl 发行版会因缺少动态链接器而报错;Windows 没有原生二进制,只能在 WSL2 内使用;Android/Termux 不受支持。从源码构建需要 Zig 0.17.0 以及 V8、libcurl 和 Rust(html5ever)。
遥测默认开启,需用 LIGHTPANDA_DISABLE_TELEMETRY=true 关闭(隐私政策)。许可证为 AGPL-3.0,嵌入或再分发前需评估。兼容性通过 Web Platform Tests 跟踪,结果每日发布(WPT 结果);README 列出的是已实现功能,并未声称完全符合标准。
本文由 AI 根据项目 README 生成,更新于 2026年10月30日,以项目官方文档为准。