Lightpanda 无头浏览器:从 0 到 1 的 5 个实战场景
【免费下载链接】browserLightpanda: the headless browser designed for AI and automation项目地址: https://gitcode.com/GitHub_Trending/browser32/browser
Lightpanda 是一个用 Zig 从零写出来的无头浏览器,不是 Chromium 的裁剪,也不是 WebKit 的补丁。官方在 AWS EC2 m5.large 上跑 933 个真实网页的基准里,100 页峰值内存约 123MB(Headless Chrome 为 2GB),总耗时 5s(Chrome 46s)——这两个数字直接决定了它适合什么、不适合什么。
对开发者来说,Lightpanda 主要解决三类问题:批量抓页面、给自动化框架接入 CDP、给 AI Agent 提供浏览器后端。下面按场景给到可跑通的最小操作路径。
一、快速上手:装好二进制,跑通第一个 fetch
Lightpanda 提供 Linux 和 macOS 的官方二进制(x86_64 与 aarch64 都有),也支持 Docker。最省事的两种装法:
# Linux x86_64 直接从 nightly 拉二进制 curl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-x86_64-linux chmod a+x ./lightpanda# 或用 Docker 起一个监听 9222 的 CDP 服务 docker run -d --name lightpanda -p 127.0.0.1:9222:9222 lightpanda/browser:nightly注意:Linux 二进制链接的是 glibc,Alpine 等 musl 基础镜像会报
cannot execute: required file not found。要么用 debian/ubuntu 系镜像,要么从源码构建。
装完先跑./lightpanda version确认可执行,再试最简单的抓取:
./lightpanda fetch --dump html --log-level info https://example.comfetch是 Lightpanda 最轻量的入口:不启 CDP,直接加载页面、执行 JS、然后把 DOM 按你指定的格式吐出来。--dump支持html、markdown、png、pdf四种输出,前两种是纯文本,后两种做纯文本级渲染(没有图形渲染引擎)。
二、场景 A:批量抓页面 / 离线快照
如果你有几百个 URL 要处理,fetch就是主力。几个实用参数:
| 参数 | 作用 |
|---|---|
--dump html\|markdown\|png\|pdf | 选择输出格式 |
--wait-until load\|domcontentloaded\|networkidle0 | 等待到什么状态再 dump |
--wait-ms <毫秒> | 简单定时等待,应对异步加载 |
--wait-selector <CSS> | 等某个元素出现再 dump |
--obey-robots | 遵守目标站点的 robots.txt |
一条典型命令:
./lightpanda fetch --obey-robots --dump markdown --wait-until networkidle0 \ --wait-selector "main" https://example.com/blog/--obey-robots是爬虫场景几乎必开的开关,避免你的自动化被目标站点拒绝。robots.txt 解析实现位于 src/network/Robots.zig 与 src/network/RobotsGate.zig。
三、场景 B:给 Puppeteer / Playwright 接入 CDP
大多数自动化框架都走 Chrome DevTools Protocol。Lightpanda 自带 CDP 服务器,你只需要把browserWSEndpoint指过去,剩下的 API 和连 Chrome 时几乎一样:
./lightpanda serve --host 127.0.0.1 --port 9222 --log-level info// Node.js 端用 puppeteer-core 连上去 import puppeteer from 'puppeteer-core'; const browser = await puppeteer.connect({ browserWSEndpoint: "ws://127.0.0.1:9222", }); const page = await (await browser.createBrowserContext()).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 服务端的核心实现在 src/cdp/CDP.zig 和 src/cdp/Connection.zig,支持 domain 包括page、dom、network、runtime、fetch、input等(详见 src/cdp/domains/)。
四、场景 C:把浏览器交给 AI Agent
Lightpanda 有一个原生agent子命令,让你用自然语言驱动浏览器——导航、点击、填表、结构化取数据都支持,背后是 Anthropic / OpenAI / Gemini / Mistral / Ollama / llama.cpp 等接入:
# 自动从环境变量识别 API Key ./lightpanda agent --task "帮我看看 news.ycombinator.com 今天的第一条是什么" # 用本地 Ollama,不依赖云端 ./lightpanda agent --provider ollama --task "抓取 example.com 的 nav 菜单" # 不带 LLM,直接进 REPL 手动操作 ./lightpanda agent --no-llmagent有个关键特性:会话结束时会导出一份PandaScript(本质是普通 JS + 几个内置原语)。你在会话里跑/save就能拿到一个脚本文件,之后直接./lightpanda run session.js复现,不再消耗 token。这让"LLM 探索 + 脚本上线"成为主流用法。
agent模块的核心代码在 src/agent/Agent.zig,模型适配在 src/agent/auth/ 下。
五、场景 D:把浏览器当 MCP 工具暴露
如果你的 Agent 框架(Claude Desktop、Cursor 等)支持 MCP,直接把 Lightpanda 挂上就行:
{ "mcpServers": { "lightpanda": { "command": "/path/to/lightpanda", "args": ["mcp"] } } }lightpanda mcp走 stdio 的 MCP JSON-RPC 2.0,一个进程对应一个浏览会话。如果要多 Agent 共享一台机器,用 HTTP 传输更合适:
lightpanda mcp --port 9223此时客户端 POST 到http://host:9223/mcp,通过Mcp-Session-Id头区分会话——不带的请求会拿到一个新 session,带的会复用一个。多 Agent 隔离/共享页签与 Cookie 的逻辑在 src/mcp/HttpServer.zig 里。
六、遥测、构建与测试
遥测默认开启,收集使用统计。不想上报时加一个环境变量即可:
LIGHTPANDA_DISABLE_TELEMETRY=true ./lightpanda serve实现见 src/telemetry/lightpanda.zig。
从源码构建:Lightpanda 基于 Zig 0.15.2,依赖 V8 与 html5ever,
make build会用预编译 V8(make download-v8)避免 10 分钟级的 V8 源码编译。本地跑测试:
make test F="server" # 按子串过滤 make test # 全量Web Platform Tests 走
make wpt,单个用例可指定文件,如Node-childNodes.html。
边界与现状
Lightpanda 目前处于 Beta。README 的状态清单里 CORS 尚未完成,其余 HTTP 加载、DOM、Ajax(XHR / Fetch)、点击、表单、Cookie、自定义 Header、代理、网络拦截、--obey-robots均已实现。JS 引擎是 V8,DOM 树与 DOM API 覆盖了绝大多数日常选择器和常用事件——但对于重度依赖图形渲染、复杂 Canvas、WebGL 的页面,它的能力边界会比 Chrome 窄一些。如果你要跑的站点踩到不兼容 API,建议先降级到fetch --dump html验证,再去 CDP 层复现。
更多参数与示例见./lightpanda help和./lightpanda help fetch的子命令帮助,或在仓库内 src/browser/tests/ 里按 HTML 文件名浏览各模块的验收用例。
【免费下载链接】browserLightpanda: the headless browser designed for AI and automation项目地址: https://gitcode.com/GitHub_Trending/browser32/browser
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考