🎯 一款可定制、具备反检测功能的云浏览器,由自主研发的 Chromium驱动,专为网页爬虫AI 代理设计。👉立即试用
返回博客

什么是 Lightpanda?用于 AI 代理的 Zig 无头浏览器

Alex Johnson
Alex Johnson

Senior Web Scraping Engineer

10-Jul-2026

TL;DR:

  • Lightpanda 是一个从头开始用 Zig 编写的无头浏览器——而不是 Chromium 的分支——它将 V8 用于 JavaScript 结合自有的 DOM 实现,已在 AGPL-3.0 许可下开源,并获得超过 31,000 个 GitHub 星标。
  • 该项目的爬虫基准测试(在 AWS m5.large 上的 933 个真实页面)显示,100 个页面的峰值内存为 123 MB,而无头 Chrome 为 2 GB,执行速度约快了 9 倍——这些数据支撑了其“最快无头浏览器”的声誉。
  • 一个二进制文件完成四项工作fetch 以 HTML 或 markdown 格式输出渲染页面,serve 提供 Puppeteer 的 CDP 服务器,agent 用简单的英语驱动浏览器,mcp 将其连接到 MCP 客户端。
  • Lightpanda 处于 Beta 阶段,部分符合网络标准——CORS 仍然是一个未解决的问题,并且某些网站可能崩溃或渲染错误——因此它在处理大量页面的爬虫工作时表现出色,而不是作为一个通用的 Chrome 替代品。
  • 当目标需要完整的 Chromium 保真度、居民出口或挑战处理时,Scrapeless Scraping Browser 接管同样的 CDP 工作流程,作为托管的云会话——Lightpanda 用于简单的 80% 速度,而托管的云浏览器则用于困难的 20%。
  • 免费开始使用。 新的 Scrapeless 账户包括免费的 Scraping Browser 运行时——请在 app.scrapeless.com 注册。

介绍:当你删除抓取器从不使用的部分时,浏览器看起来像什么

一个处理一百万页面的爬虫从不绘制一个像素。它仍然需要为每一个实例支付 Chromium 的合成器、GPU 进程和媒体堆栈,因为无头 Chrome 是一个去掉了窗口的桌面浏览器,而不是专为机器设计的浏览器。Lightpanda 则从相反的方向开始:仅构建自动化所需要的内容——一个 HTTP 加载器、一个 HTML 解析器、一个 DOM 和一个 JavaScript 引擎——完全跳过图形渲染。

结果是一个单一的 Zig 二进制文件,通过V8 执行页面 JavaScript,使用 Servo 项目的html5ever 解析器 解析标记,使用libcurl 加载资源,并支持足够的 Chrome DevTools 协议,使 Puppeteer 将其视为浏览器。它在AGPL-3.0 许可证下开源,并收集了超过 31,000 个 GitHub 星标。

本指南涵盖了安装 Lightpanda、其四种 CLI 模式、连接 Puppeteer、其 Beta 范围以及如何与一个托管的云浏览器 配合使用以处理尚未完全支持的目标。

什么是 Lightpanda?

Lightpanda 是一个专为 AI 代理和网页自动化构建的开源无头浏览器引擎,且没有源自 Chromium 或 WebKit 的历史。由于它仅实现自动化所接触到的机器,因而其占用空间是完整浏览器的一小部分:该项目发布的爬虫基准测试——从 AWS EC2 m5.large 请求的 933 个真实网页——记录了跨 100 个页面的峰值内存为 123 MB,而无头 Chrome 为 2 GB,并且在大约 5 秒内完成同样的 100 个页面,相比之下无头 Chrome 则需要 46 秒。这些是项目自行测量的数据;任何基准测试的警告之下,能够得出的结论是,去除渲染管道改变了在大规模运行浏览器时的成本模型。

其权衡是覆盖面。从零开始的浏览器必须重新实现数十年的网络平台表面,而 Lightpanda 的状态显然是 Beta:许多网站能够正常工作,有些会出错或崩溃,像 CORS 这样的特性仍然是跟踪器上的未解决问题。这种诚实对于你如何部署它很重要——更多内容将在下文中说明。

安装 Lightpanda

每晚构建的二进制文件支持 Linux 和 macOS 的 x86_64 和 aarch64,以及 Homebrew(brew install lightpanda-io/browser/lightpanda)和官方 Docker 镜像。在 Linux 上:

bash Copy
# 下载每晚构建的二进制文件并使其可执行
curl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-x86_64-linux && \
chmod a+x ./lightpanda

# 确认它在运行
./lightpanda version

Linux 二进制文件链接到 glibc,因此基于 musl 的发行版如 Alpine 需要一个 glibc 基础镜像或源构建。没有原生的 Windows 二进制文件——在 Windows 上,你需要在 WSL2 中安装它,该 WSL2 会自动将 localhost:9222 转发到主机,因此 Windows 端的 Puppeteer 脚本连接时就像浏览器在本地一样。

第一次运行之前,有一个值得了解的默认值:Lightpanda 会发送使用遥测,除非你在环境中设置 LIGHTPANDA_DISABLE_TELEMETRY=true

CLI:fetch, serve, agent, mcp

Lightpanda的单一二进制文件覆盖了四个工作流。查看引擎工作的最快方式是fetch,它加载页面——执行JavaScript——并转储渲染结果:

bash Copy
# 渲染的HTML输出到标准输出;--dump markdown将页面转换为markdown
./lightpanda fetch --obey-robots --dump html --log-level warn https://demo-browser.lightpanda.io/campfire-commerce/

在项目的演示商店中,这返回了完整渲染的文档(<title>Outdoor Odyssey Nomad Backpack</title>及其他),而--dump markdown会输出干净的markdown转换——对于页面被引入LLM上下文窗口而非解析器非常实用。--wait-until--wait-ms--wait-selector--wait-script调节引擎在转储之前等待的时间。

对于自动化客户端,serve启动CDP服务器:

bash Copy
./lightpanda serve --obey-robots --log-level warn --host 127.0.0.1 --port 9222

剩余的两种模式是较新的,而且在仓库外文档很少:agent通过简单英语任务驱动浏览器与LLM(Anthropic、OpenAI、Gemini、Vertex、Hugging Face或通过Ollama的本地模型),并可以将会话导出为PandaScript——可重放的JavaScript,能够在运行时无模型地确定性地重新运行流程。mcp在stdio上运行本地的MCP服务器,因此支持MCP的代理可以无任何包装进程地将Lightpanda作为工具使用。

连接Puppeteer

在运行serve的情况下,puppeteer-core通过WebSocket端点连接。此示例从JavaScript渲染的列表页面提取每个链接:

js Copy
import puppeteer from 'puppeteer-core';

// browserWSEndpoint指向Lightpanda的CDP服务器
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://demo-browser.lightpanda.io/amiibo/', { waitUntil: 'networkidle0' });

// DOM是真实的并由V8渲染,因此evaluate的工作方式与Chrome完全相同
const links = await page.evaluate(() =>
  Array.from(document.querySelectorAll('a')).map((a) => a.getAttribute('href'))
);
console.log(links.length, 'links');

await page.close();
await context.close();
await browser.disconnect();

在实时演示页面中,这返回了12个链接。现有的Puppeteer代码大部分可以转移;不兼容的部分是接触Lightpanda尚未实现的web平台特性——这是一个合适的过渡。

在免费计划中获取您的API密钥:app.scrapeless.com

Beta边界——和操作边界

两个不同的限制决定了Lightpanda在生产流水线中的适用位置,值得将它们分别对待。

引擎限制是临时的,但确实存在。 Beta意味着对网络标准的部分覆盖:CORS是一个未解决的问题,一些页面会出错或崩溃,依赖于未实现API的网站不会像在Chrome中那样表现。该项目对此是透明的——README中的功能清单是公开的——且覆盖率在稳步提高。在覆盖达到一致之前,每个目标在您将爬虫提交之前都需要进行快速的兼容性检查。注意在嵌入时的许可证:AGPL-3.0带有商业产品团队应审查的copyleft义务,这也是公司在其网站上提供托管云服务的原因之一。

操作限制是永久性的——没有引擎可以解决它。 与每个自托管的浏览器一样,Lightpanda将出口、地理定位和挑战处理留给您。请求来源于您机器的IP;一个限制数据中心范围或提供流量验证插页的网站会根据请求的来源进行响应,而不是根据浏览器的精简程度。引擎层的速度对无法进入前门的请求毫无作用。

与Scrapeless Scraping Browser配对

实际的生产模式是一个两层流水线。Lightpanda爬取高流量、低阻力的层级——网站地图、文档、目录、任何其引擎渲染的内容——成本仅为Chrome的一小部分。需要完全Chromium保真度、住宅出口或挑战处理的目标则转向Scrapeless Scraping Browser:一种由自主开发的Chromium驱动的反检测云浏览器,具有在195多个国家选择的住宅代理,每个会话均无您一方的基础设施。

两个层级都通过同一Puppeteer代码与CDP进行通信,因此路由器只需一行——您为connect提供哪个WebSocket端点。 Scrapeless文档全面覆盖SDK;会话的创建如下所示:

js Copy
import { Scrapeless } from '@scrapeless-ai/sdk';
import puppeteer from 'puppeteer-core';
javascript Copy
const client = new Scrapeless({ apiKey: process.env.SCRAPELESS_API_KEY });

// 一个带有住宅出口的云 Chromium 会话——“硬目标”层
const session = await client.browser.create({
  session_name: 'lightpanda-guide-demo',
  session_ttl: 180,
  proxy_country: 'US',
});

const browser = await puppeteer.connect({
  browserWSEndpoint: session.browserWSEndpoint,
  defaultViewport: null,
});

const page = await browser.newPage();
await page.goto('https://demo-browser.lightpanda.io/amiibo/', { waitUntil: 'domcontentloaded' });
await page.waitForSelector('a'); // 列表的锚点在客户端渲染后附加
const links = await page.evaluate(() =>
  Array.from(document.querySelectorAll('a')).map((a) => a.getAttribute('href'))
);
console.log(links.length, '链接');

await browser.close();

同样的任务,使用相同的客户端库,相同的结果形状——但是会话在受管理的住宅出口后运行完整的 Chromium,因此即使目标是 Lightpanda 无法渲染的目标或按 IP 过滤的目标,它也能正常工作。定价 是基于使用的,并且有一个涵盖此指南的免费层。在谱系的检测重度端,Playwright 不被检测的指纹浏览器指南 从 Playwright 侧展示了相同的云会话模式。

结论:在廉价的地方提供速度,在重要的地方提供精准

Lightpanda 的赌注——为机器从零开始重建的浏览器——在它渲染的页面上获得了数量级的成本降低,它的代理、MCP 和 PandaScript 界面使其成为 AI 自动化领域中最有趣的引擎之一。其 Beta 覆盖和自托管特性划定了边界:验证每个目标是否正确渲染,并保持完整的 Chromium 路径,以应对那些不渲染或对出口质量设限的目标。

在一个代码库内将拆分作为路由决策运行:Lightpanda 的 ws://127.0.0.1:9222 为廉价层,Scrapeless 爬虫浏览器会话为其他部分。两层都不需要重写另一层的代码——这就是一切使用 CDP 的静默好处。


准备好构建您的 AI 驱动的数据管道了吗?

加入我们的社区,申请免费计划,并与正在构建混合爬虫管道的开发者联系: Discord · Telegram

app.scrapeless.com 注册以获得免费的爬虫浏览器运行时,并在 Lightpanda 处理廉价目标的同时,通过它路由您的硬目标。

常见问题

问:Lightpanda 是 Chromium 的一个分支吗?
不。Lightpanda 是用 Zig 从头编写的,拥有自己的 DOM 和网络,使用 V8 进行 JavaScript 执行,使用 html5ever 进行 HTML 解析。它与 Chromium 共享 Chrome DevTools 协议作为兼容性接口,而不是任何引擎代码。

问:Lightpanda 可以与 Puppeteer 和 Playwright 一起使用吗?
Puppeteer 通过 puppeteer.connect({ browserWSEndpoint })lightpanda serve 进行连接,这也是项目文档和本指南运行的集成。其他 CDP 客户端也可以与相同的端点通信,但覆盖范围依赖于每个客户端运行的协议域——在引擎处于 Beta 时,测试您的客户端与目标页面的兼容性。

问:Lightpanda 可以截图吗?
不——Lightpanda 没有图形渲染管线,这正是它速度和内存优势的来源。需要像素(视觉回归、截图捕捉)的工作流程需要完整的浏览器;DOM 提取、链接爬取和 markdown 转储是 Lightpanda 的适合之处。

问:Lightpanda 适合生产吗?
它处于 Beta 阶段。项目声明许多网站可以正常工作,但误差或崩溃仍有可能;CORS 等功能仍然是未解决的问题。今天的生产使用意味着将其应用于您已验证其渲染的目标,并为其他目标提供备用路径。

问:为什么选择与 Scrapeless 配对而不是向 Lightpanda 添加代理?
仅使用代理只能更改 IP,但硬目标还会检查浏览器的准确性并提出挑战——而一个拥有部分标准覆盖的 Beta 引擎正是最容易被发现的地方。Scrapeless 爬虫浏览器将完整自开发的 Chromium、防检测指纹识别和全球 195+ 个国家的住宅代理结合在一个受管理的会话中,因此硬层作为一个整体解决,而不是从多个部分组装。

在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。

最受欢迎的文章

目录