プログラミング
Show HN: Draco – Rust製のシングルバイナリでセルフホスト可能なFirecrawl代替ツール
Show HN: Draco – A single-binary, self-hostable Firecrawl alternative in Rust (github.com)
要約
現代のウェブサイトのスクレイピングは困難で高コストになりがちですが、DracoはRustで書かれた高速なシングルバイナリWebスクレイパーとして登場しました。これは、カスタムTLS/JA4フィンガープリントによるステルスフェッチ、V8アイソレートによるSPAレンダリング、そして最終手段としてのブラウザフォールバックという多層的なアプローチで、Cloudflareのような保護を回避し、低リソースで動作します。Firecrawl互換のREST APIやMCPサーバー機能も備え、セルフホスト可能なオープンソースソリューションを提供します。
全文翻訳
現代のウェブサイトのスクレイピングは、非常に面倒な作業になっています。選択肢は主に2つです。FirecrawlやBrowserbaseのような高価なAPIを利用するか、ページごとに1GBのRAMを消費し、それでもCloudflareにブロックされる可能性のあるヘッドレスChromeインスタンスの群れを実行するかです。
私はこの問題を解決するためにDracoを開発しました。これはRustで書かれた高速なシングルバイナリWebスクレイパーです。URLを指定すると、完全にクリーンなMarkdownまたはLLM向けの構造化されたJSONが出力されます。
その秘密は、リクエストごとにブラウザを起動するだけではないことです。Dracoは多層的なエスカレーションエンジンを使用しています。
ティア1(ステルスフェッチ):DracoはカスタムTLS/JA4フィンガープリントを使用して、パケットレベルで実際のブラウザのネットワークシグネチャを完全に模倣します。多くのボット対策壁は、ハンドシェイクが正しければ通過させてくれることが判明しました。CloudflareやTargetのようなサイトに対する私のベンチマークでは、Playwrightは〜500MBのRAMを消費し、タイムアウトしましたが、Dracoはわずか20MBのRAMで1秒未満でそれらをバイパスしました。
ティア2(V8アイソレート):React/Next.jsのSPAでレンダリングが必要な場合、Dracoはミリ秒単位でインプロセスV8エンジンを起動します。DOMをハイドレートし、ページが呼び出している隠しJSON APIをインターセプトすることで、グラフィカルブラウザのオーバーヘッドなしに生のデータを提供します。
ティア3(リアルブラウザ):どうしても壁にぶつかった場合、ローカルマシン上の実際のブラウザを検出して駆動することにシームレスにフォールバックします。
また、ホスト型サービスと完全にドロップインで置き換えられるように、すべてのツールを組み込みました。
デーモンモード:`draco serve`を実行すると、Firecrawl互換のREST APIを備えた永続的なHTTPサーバーが得られます。APIキーを置き換えて、すぐにセルフホストできます。
組み込みMCPサーバー:ネイティブでModel Context Protocolサーバーを公開するため、Claude DesktopやAIエージェントに直接接続できます。
Web検索:組み込みの並列マルチエンジンWeb検索(Google Search APIキーの必要性を回避します)。
インタラクトモード:ナビゲーション間でクッキーを永続化し(主にLLM向け)、デベロッパーツールコンソールのようにステートフルにページを駆動します。
これは完全にオープンソース(MIT/Apache-2.0)です。ヘッドレスChromiumとの戦いや、ページごとのスクレイピングコストにうんざりしているすべての人々のために、これを公開したかっただけです。バイナリをダウンロードして、難しいURLを試してみてください。
まだ開発途上(WIP)であるため、珍しいサイトで予期しない問題が発生する可能性がありますが、ほとんどの場合、非常に有能であり、cf保護されたサイトや重いSPAを処理できます。他のすべては部分的にまたは完全に失敗し、より長く、またはより多くのリソースを消費します。(example.com、hackernews、cloudflare、glassdoor、bluff.com、target.com、stake.com、thrill.comでテスト済み)
┏━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┓
┃ Rank ┃ Tool ┃ Score ┃ Pass ┃ Avg Time ┃ Avg RAM ┃
┡━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━╇━━━━━━━━━━╇━━━━━━━━━┩
│ #1 │ Draco │ 769.7 │ 8/8 │ 3.45 │ 216.50 │
│ #2 │ Obscura │ 384.5 │ 4/8 │ 2.68 │ 87.59 │
│ #3 │ BrowserOxide │ 373.4 │ 4/8 │ 6.42 │ 105.95 │
│ #4 │ Playwright │ 342.2 │ 4/8 │ 1.71 │ 535.07 │
│ #5 │ Bouncy │ 196.6 │ 2/8 │ 0.59 │ 19.38 │
└──────┴────────────────┴───────┴──────┴──────────┴─────────┘
Repo: https://github.com/0xchasercat/draco/