ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Lightpanda 指南:用 Zig 写的无头浏览器,100 个网页 5 秒抓完

Lightpanda 指南:用 Zig 写的无头浏览器,100 个网页 5 秒抓完 Lightpanda 指南用 Zig 写的无头浏览器100 个网页 5 秒抓完【免费下载链接】browserLightpanda: the headless browser designed for AI and automation项目地址: https://gitcode.com/GitHub_Trending/browser32/browser批量抓取几百个网页时完整 Chrome 实例动辄吃掉 2GB 内存这是服务器上的实际负担。Lightpanda 是一个用 Zig 从零编写的无头浏览器即不带图形界面的浏览器内核只保留 DOM、JavaScript 执行和网络请求这三样核心能力命令行即可完成抓取、执行 JS 和输出结果。30 秒定位它是什么、砍掉了什么它是什么。Lightpanda 不是 Chromium 或 WebKit 的分支而是一个面向 AI 与浏览器自动化场景的新内核。选 Zig 的原因很直接底层语言、显式内存控制没有运行时开销写系统组件时分配多少内存由你决定。JS 执行交给 V8 引擎HTML 解析用的是 Servo 的 html5everHTTP 传输基于 Libcurl这三块以独立模块接入核心层保持精简。它砍掉了什么。图形渲染引擎、窗口管理、GPU 合成——这些对人类用户有价值、对服务器是纯开销的部分。换来的是进程启动即就绪单实例内存以 MB 计可以在一台机器上横向铺很多个。适合哪类任务。大规模网页抓取与数据提取、AI 训练数据预处理、自动化测试与 CI 流程、服务器端渲染SSR即在服务端把页面渲染成 HTML 再输出。它不适合的很明确需要看渲染结果、截图复杂布局、跑完整 GUI 应用的场景。从安装到第一条 fetch安装以 Docker 为主线二进制作为备选一笔带过。# 官方 Docker 镜像CDP 端口映射到本机 docker run -d --name lightpanda -p 127.0.0.1:9222:9222 lightpanda/browser:nightly # 备选macOS 用 brew install lightpanda-io/browser/lightpanda 装 nightly # Windows 没有原生二进制装进 WSL2 后按 Linux 流程走localhost:9222 会自动转发装完先验证一下./lightpanda version。然后跑第一条抓取命令--dump html会把 JS 执行完的最终 DOM 结构输出到终端也可以换成--dump markdown直接转成 Markdown或用--wait-selector、--wait-ms等参数控制输出时机./lightpanda fetch --obey-robots --dump html https://example.com/--obey-robots让它遵守目标站的 robots.txt批量任务建议默认开启。接入 PuppeteerCDP 连接全流程CDPChrome DevTools Protocol是 Puppeteer 这类工具控制浏览器的标准通道Lightpanda 内置了对应的 WebSocket 服务端所以现有 Puppeteer 脚本基本可以原样接入只改连接地址。启动 CDP 服务。./lightpanda serve --host 127.0.0.1 --port 9222写最小连接脚本。下面是跑通一个完整任务连接、建页、导航、提取数据、断开所需的全部代码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: networkidle0 }); const links await page.evaluate(() Array.from(document.querySelectorAll(a)).map(a a.getAttribute(href)) ); console.log(links); await page.close(); await context.close(); await browser.disconnect();注意puppeteer-core与puppeteer的区别前者不自带 Chrome正适合连接外部浏览器。能力边界API 支持现状Web API 有几百个任何浏览器都做不到全覆盖Lightpanda 目前落在什么水平下表是相对准确的位置对应实现代码能力状态实现入口DOM 操作查询、读写、遍历已实现主流 API 可用Element 实现Fetch API已实现Fetch 实现XHR / AJAX已实现XHR 实现Cookie 管理已实现cookies表单填写与点击已实现表单处理网络拦截、代理、自定义请求头已实现见生产环境一节CORS未完成官方清单中唯一未勾的核心项跟踪上游 issue其余高级 Web API持续补全中—README 的官方基准给了一组可核对的数字在 AWS EC2 m5.large 实例上通过网络抓取 933 个真实网页取 100 页的峰值内存与耗时——指标Lightpanda无头 Chrome峰值内存100 页123MB2GB执行耗时100 页5s46s即内存约 1/16、耗时约 1/9。你的页面 JS 越重、并发越高差距通常越明显纯静态页差距会小一些。生产环境三件事连接复用。保持一个 serve 进程常驻所有任务走同一个 CDP 连接、用多个 browser context 隔离页面和 Cookie避免反复起进程。Lightpanda 的 MCPModel Context Protocol给 AI Agent 用的工具调用协议HTTP 服务也支持按Mcp-Session-Id给每个 Agent 分独立浏览会话。资源拦截。CDP 层的网络拦截已实现可以在请求发出前按资源类型丢弃图片、字体等对提取无用的负载省带宽也省时间。拦截逻辑在网络层入口在 HttpClient。并发控制。参考每 CPU 核心 5~10 个页面来调并发上限内存水位是主要约束建议以 100MB/实例 为观察阈值。源码构建与调优。需要定制时从源码构建要求 Zig 0.15.2另需 V8、Libcurl、html5ever 三个依赖Debian/Ubuntu 上装好基础包后make build即可make download-v8可拉预编译 V8 省掉几分钟编译。仓库入口git clone https://gitcode.com/GitHub_Trending/browser32/browser lightpanda cd lightpanda make build日志方面serve/fetch 的--log-level debug加--log-format pretty是排障起点不想要匿名使用统计就设LIGHTPANDA_DISABLE_TELEMETRYtrue生产机上可再设LIGHTPANDA_DISABLE_CORE_DUMP关掉崩溃 dump。现状与参与方式项目当前处于 Beta 阶段稳定性和 API 覆盖面在持续改善复杂站点上仍可能遇到报错遇到时请带具体页面和日志提 issue。近期路线上最显眼的两件事是 CORS 支持落地以及继续向 Web Platform TestsWPT浏览器标准符合性测试集的覆盖结果推进。想参与的话流程写在 CONTRIBUTING.mdmake test通过、zig fmt --check干净、PR 里签 CLA 即可提代码Discord 是日常讨论入口。Lightpanda 给自动化场景的答案很朴素把浏览器里用不到的部分拿掉剩下的做快、做小。【免费下载链接】browserLightpanda: the headless browser designed for AI and automation项目地址: https://gitcode.com/GitHub_Trending/browser32/browser创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表