ライトパンダとは?AIエージェントのためのZigヘッドレスブラウザ
Senior Web Scraping Engineer
TL;DR:
- Lightpandaは、ゼロからZigで書かれたヘッドレスブラウザであり、Chromiumのフォークではありません — JavaScript用のV8を独自のDOM実装と組み合わせたもので、AGPL-3.0のもとオープンソースとして公開され、GitHubで31,000以上のスターを獲得しています。
- このプロジェクトのクローラーベンチマーク(AWS m5.largeの933の実際のページ)は、ヘッドレスChromeの2GBに対して100ページで123MBのピークメモリを測定し、実行速度は約9倍速 — これが「最速のヘッドレスブラウザ」という評判の裏付けとなっています。
- 1つのバイナリは4つの役割を果たします:
fetchは、レンダリングされたページをHTMLまたはMarkdownとして出力し、serveはPuppeteer用のCDPサーバーを公開し、agentは通常の英語でブラウザを操作し、mcpはMCPクライアントに接続します。 - Lightpandaは部分的なウェブ標準のカバレッジを持つベータ版です — CORSはまだ解決していない問題で、一部のサイトはクラッシュまたは誤レンダリングします — そのため、簡単に扱えるページの高ボリュームクローリングでは優れており、普遍的なChromeの置き換えではありません。
- ターゲットが完全なChromiumの忠実度、住宅用出口、または課題処理を必要とする場合、Scrapeless Scraping Browserは同じCDPワークフローを引き継ぎます — 簡単な80%はLightpandaでスピードを得て、難しい20%は管理されたクラウドブラウザで処理します。
- 無料で始められます。 新しいScrapelessアカウントには無料のScraping Browserランタイムが含まれています — app.scrapeless.comでサインアップしてください。
イントロダクション: スクレイパーが使用しない部分を削除したときのブラウザの見た目
百万ページを処理するクローラーは、一ピクセルも描画しません。ヘッドレスChromeはウィンドウを取り除いたデスクトップブラウザであるため、毎回インスタンスごとにChromiumの合成器、GPUプロセス、およびメディアスタックの料金を支払う必要があります。Lightpandaは反対の端から開始します: 自動化が使用するものだけを構築する — HTTPローダー、HTMLパーサー、DOM、およびJavaScriptエンジン — グラフィカルレンダリングは完全にスキップします。
その結果、ページJavaScriptをV8経由で実行し、Servoプロジェクトのhtml5everパーサーでマークアップを解析し、リソースをlibcurl経由でロードし、Puppeteerがブラウザとして扱うのに十分なChrome DevToolsプロトコルを話すシングルバイナリが得られました。これはAGPL-3.0ライセンスの元でオープンソースであり、31,000以上のGitHubスターを集めています。
このガイドでは、Lightpandaのインストール、4つのCLIモード、Puppeteerとの接続、およびまだ処理できないターゲットのために管理されたクラウドブラウザとの組み合わせについて説明します。
Lightpandaとは?
Lightpandaは、AIエージェントとウェブ自動化のために特に構築されたオープンソースのヘッドレスブラウザエンジンであり、ChromiumやWebKitからの系譜は持ちません。自動化が触れる機械のみを実装しているため、全体のブラウザのフットプリントは一部です。このプロジェクトが公開したクローラーベンチマーク — AWS EC2 m5.largeからリクエストされた933の実際のウェブページ — は、ヘッドレスChromeの2GBに対して100ページで123MBのピークメモリを記録し、100ページを約5秒で完了しました。これはプロジェクトの独自の測定結果です; 測定結果のいかんにかかわらず、レンダリングパイプラインを排除すると、ブラウザを大規模に運用するコストモデルが変化するという要点が残ります。
トレードオフはカバレッジです。ゼロからのブラウザは何十年にもわたるウェブプラットフォームの表面を再実装する必要があり、Lightpandaのステータスは明示的にベータです: 多くのサイトは動作しますが、一部はエラーを出すかクラッシュします。CORSなどの機能はまだトラッカー上で未解決の問題です。この正直さは、どのようにデプロイするかに重要です — 詳細は以下にあります。
Lightpandaをインストール
ナイトリーバイナリは、x86_64およびaarch64のLinuxとmacOS用に提供されており、Homebrew(brew install lightpanda-io/browser/lightpanda)や公式Dockerイメージもあります。Linux上でのインストール手順は以下の通りです:
bash
# ナイトリーバイナリをダウンロードし、実行可能にする
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にリンクされているため、Alpineのようなmuslベースのディストリビューションではglibcベースのイメージまたはソースビルドが必要です。Windows用のネイティブバイナリはありません — Windows上では、WSL2内にインストールし、これがホストに自動的にlocalhost:9222を転送するため、Windows側のPuppeteerスクリプトはブラウザがローカルにあるかのように接続します。
初回実行前に知っておくべきデフォルト: Lightpandaは、LIGHTPANDA_DISABLE_TELEMETRY=trueを環境変数に設定しない限り、使用状況のテレメトリを送信します。
CLI: fetch, serve, agent, mcp
Lightpandaのシングルバイナリは4つのワークフローをカバーしています。エンジンの動作を最も早く確認する方法はfetchで、これによりページが読み込まれ(JavaScriptが実行され)、レンダリングされた結果が出力されます:
bash
# レンダリングされたHTMLをstdoutに出力; --dump 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はクリーンなマークダウン変換を出力します — これはページがパーサーではなくLLMコンテキストウィンドウ向けである場合に便利です。--wait-until、--wait-ms、--wait-selector、--wait-scriptは、出力前にエンジンが待機する時間を調整するオプションです。
自動化クライアント向けに、serveはCDPサーバーを起動します:
bash
./lightpanda serve --obey-robots --log-level warn --host 127.0.0.1 --port 9222
残りの2つのモードは新しいもので、リポジトリ外ではほとんど文書化されていません:agentは、普通の英語のタスクからLLM(Anthropic、OpenAI、Gemini、Vertex、Hugging Face、またはOllama経由のローカルモデル)でブラウザを操作し、セッションをPandaScriptとしてエクスポートすることができます — 実行時にモデルなしでフローを決定論的に再実行するJavaScriptです。mcpは、stdio上でネイティブのMCPサーバーを実行するので、MCP対応エージェントはラッパープロセスなしでLightpandaをツールとして使用できます。
Puppeteerとの接続
serveが実行された状態で、puppeteer-coreはWebSocketエンドポイントを介して接続します。この例では、JavaScriptでレンダリングされたリスティングページからすべてのリンクを抽出します:
js
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
ベータ境界 — そして運用境界
Lightpandaが生産パイプラインにどのように収まるかを決定する2つの異なる制限があり、それを区別しておく価値があります。
エンジンの制限は一時的ですが実在します。 ベータ版は部分的なWeb標準のカバーを意味します:CORSは未解決の問題であり、一部のページはエラーを出したりクラッシュしたりし、未実装のAPIに依存しているサイトはChromeでの動作とは異なるでしょう。このプロジェクトはこれに関して透明であり — READMEの機能チェックリストは公開されています — カバー範囲は着実に改善しています。収束するまで、すべてのターゲットはクローラーをコミットする前に迅速な互換性チェックが必要です。また、埋め込み時にはライセンスにも注意してください:AGPL-3.0はコピーレフトの義務を伴い、商業プロダクトチームが確認する必要があります。これが、会社が自身のサイトでホスティングされたクラウドの提供を行っている理由の一つです。
運用の制限は永続的です — どのエンジンもこれを解決しません。 自己ホスト型ブラウザと同様に、Lightpandaはエグレッシ、ジオターゲティング、挑戦処理をあなたに任せます。リクエストはあなたのマシンのIPから始まります;データセンターの範囲をレート制限したり、トラフィック検証のインタースティシャルを提供するサイトは、リクエストの出所に基づいて応答し、背後のブラウザの効率には関係ありません。エンジン層での速度は、玄関を通過できないリクエストには何も意味がありません。
Scrapeless Scraping Browserとの連携
実際の生産パターンは二層のパイプラインです。Lightpandaは高ボリュームで抵抗の少ない層 — サイトマップ、ドキュメント、カタログなど、エンジンがレンダリングするもの — を、Chromeのコストのほんの一部でクロールします。完全なChromiumの完全な忠実度、住宅用エグレッシ、または挑戦処理が必要なターゲットは、Scrapeless Scraping Browserにルーティングされます:自己開発したChromiumを駆動源とするアンチ検出クラウドブラウザで、195か国以上の住宅プロキシをセッションごとに選択し、あなた側にはインフラは必要ありません。
両方の層は同じPuppeteerコードにCDPを使用して話すので、ルーターは一行 — どのWebSocketエンドポイントをconnectに渡すか — です。ScrapelessドキュメントはSDKの全容をカバーしており、セッションのミントは以下のようになります:
js
import { Scrapeless } from '@scrapeless-ai/sdk';
import puppeteer from 'puppeteer-core';
javascript
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, 'links');
await browser.close();
同じタスク、同じクライアントライブラリ、同じ結果の形 - ただし、セッションは管理されたレジデンシャルエグレスの背後でフルChromiumを実行しているため、LightpandaがレンダリングできないターゲットやIPでフィルタリングされるターゲットでも機能します。料金は使用ベースで、無料プランがこのガイドをカバーしています。検出が重視されるスペクトラムの端において、Playwrightの検出されないフィンガープリンターガイドは、Playwright側から同じクラウドセッションパターンを説明しています。
結論:安くて速いところ、重要なところでの忠実度
Lightpandaの賭け - 機械用にゼロから再構築されたブラウザ - は、レンダリングするページでのコスト削減のオーダーを購入し、そのエージェント、MCP、そしてPandaScriptのサーフェスにより、AIオートメーション分野で最も興味深いエンジンの1つとなっています。そのベータ版のカバレッジと自己ホスト型の性質が境界を引きます:各ターゲットが正しくレンダリングされているか検証し、レスポンス品質でフィルタリングされるものやそれが正しくレンダリングされないものに対してフルChromiumパスを保持します。
1つのコードベース内でのルーティング決定として分割を実行します:Lightpandaの ws://127.0.0.1:9222 は安価な層用、残りはScrapelessスクレイピングブラウザセッションです。どちらの層も他方のコードを再記述する必要はありません — それがすべてがCDPで話すことの静かな利点です。
AI駆動のデータパイプラインを構築する準備はできましたか?
コミュニティに参加して無料プランを請求し、ハイブリッドクローラーパイプラインを構築している開発者とつながりましょう:Discord · Telegram。
app.scrapeless.com にサインアップして無料のスクレイピングブラウザランタイムを利用し、Lightpanda が安いものを処理している間にハードターゲットをそれを通じてルーティングします。
よくある質問
Q: LightpandaはChromiumのフォークですか?
いいえ。LightpandaはZigでゼロから書かれたもので、独自のDOMとネットワーキングを持ち、JavaScriptの実行にはV8、HTMLの解析にはhtml5everを使用しています。エンジンコードではなく、互換性のあるSurfaceとしてChrome DevTools ProtocolをChromiumと共有しています。
Q: LightpandaはPuppeteerやPlaywrightで動作しますか?
Puppeteerは puppeteer.connect({ browserWSEndpoint }) を通じて lightpanda serve に対して機能し、その統合がプロジェクトが文書化しているもので、このガイドもそれを実行しました。他のCDPクライアントも同じエンドポイントに接続できますが、カバレッジは各クライアントが使用するプロトコルドメインに依存します — エンジンがベータ版の間にターゲットページに対してクライアントをテストしてください。
Q: Lightpandaはスクリーンショットを撮れますか?
いいえ — Lightpandaにはグラフィカルレンダリングパイプラインがないため、ここに速度とメモリの利点があります。ピクセルが必要なワークフロー(視覚的回帰、スクリーンショットキャプチャ)は完全なブラウザが必要であり、DOM抽出、リンククローリング、マークダウンダンプがLightpandaにフィットします。
Q: Lightpandaは生産準備が整っていますか?
ベータ版です。プロジェクトは多くのウェブサイトが機能することを示しており、エラーやクラッシュも発生する可能性があります。CORSのような機能は未解決の問題として残っています。今日の生産使用は、それが正しくレンダリングされることを確認したターゲットに限定し、他のものについてはフォールバックパスが必要です。
Q: なぜLightpandaにプロキシを追加するのではなくScrapelessと併用するのですか?
プロキシだけではIPを移動しますが、ハードターゲットはブラウザの忠実度もチェックし、課題を出します — そして部分的な標準カバレッジを持つベータエンジンは正確にそこを検出されやすいです。Scrapeless Scraping Browserは、自己開発されたフルChromium、検出防止フィンガープリンティング、195以上の国のレジデンシャルプロキシを1つの管理セッションに統合しているため、ハード層が部品から組み立てられるのではなく、ユニットとして解決されます。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



