従来のスクレイピングと自動化がブロックされる理由
Cloudflare、DataDome、PerimeterX、Akamaiなどのアンチボットシステムは、IPベースの検出をはるかに超えて進化しています。ブラウザフィンガープリント、JavaScript実行環境、TLSハンドシェイク、行動パターンを分析します。ヘッドレスChromeで動作する基本的なPuppeteerやSeleniumのセットアップは簡単に検出されます — navigator.webdriverフラグ、ブラウザプラグインの欠如、均一なレンダリング出力がすぐに判明します。
Donut Browserは、自動化に本物のブラウザプロファイルと本物のフィンガープリントを提供します。各プロファイルは、パッチを当てたヘッドレスChromeではなく、完全なブラウザエンジンで動作し、Pixelscan、IPHey、fingerprint.comの検出をパスする50以上のスプーフィングパラメータを備えています。無料のローカルREST APIとMCPサーバーでプロファイル、プロキシ、グループを管理できます。Proプランでは、プロファイルの起動、Chrome DevTools Protocolポートの取得、PuppeteerやPlaywrightの接続による完全なブラウザ自動化が可能です — Claudeやその他のLLMによるAI駆動ワークフローを含みます。
すべてのプロファイルは実行間でセッションを永続的に保持します。APIを通じてプロファイルを停止して再起動すると、Cookie、ローカルストレージ、ログイン状態が保存されます。これにより、閲覧履歴を蓄積しアカウントセッションを長期にわたって維持する長期的なワークフローの構築が可能になります — 使い捨てのヘッドレスブラウザインスタンスではできないことです。
主な機能
すべてをプログラムで管理
localhost:10108で動作する完全なREST API。プロファイル、プロキシ、グループ、ブラウザ設定をプログラムで管理 — 全ユーザー無料。Proプランでブラウザ操作を追加:プロファイルの起動、Chrome DevTools Protocolポートの取得、自動化フレームワークの接続。トークン認証でAPIを保護。
AIにブラウザを操作させる
30以上のツールを備えた内蔵MCP(Model Context Protocol)サーバー。無料ツールはプロファイル管理、プロキシ設定、VPN制御、フィンガープリント更新、拡張機能管理をカバー。Proプランでブラウザ操作ツールを解放 — Claudeまたは任意のMCP互換LLMで自然言語によるプロファイルの起動と制御。
ブロックされずにスクレイピング
各プロファイルは、Canvas、WebGL、AudioContext、フォント、画面サイズ、ハードウェアスペック、WebRTCをカバーする本物のフィンガープリントを生成します。これらのフィンガープリントはPixelscan、IPHey、fingerprint.comのチェックをパスします。ヘッドレスモードでもフィンガープリントスプーフィングは完全に維持されます。
スクレイパーごとに1つのIP
個別のプロファイルにHTTP、HTTPS、SOCKS4、またはSOCKS5プロキシを割り当てられます。各プロファイルはセッション間でプロキシを維持します。固有のフィンガープリントと組み合わせることで、自動化インスタンスごとの完全な身元分離が実現します。
既存のスクリプトがそのまま使える
APIでプロファイルを起動し、Chrome DevTools Protocolポートを取得して、1行でPlaywrightまたはPuppeteerを接続できます。既存の自動化スクリプトをそのまま使用でき、SDKやラッパーライブラリは不要です。Seleniumにも対応しています。 Proプランが必要です。
検出されずに自動化
APIを通じてサーバーやCI/CD環境向けにヘッドレスモードでプロファイルを起動できます。ヘッドレスプロファイルはヘッド付きプロファイルと同じフィンガープリントスプーフィングを使用するため、アンチボットシステムは通常のブラウザセッションと区別できません。 Proプランが必要です。
ローカルAPIで自動化
Donut Browserはポート10108のローカルREST APIでブラウザプロファイルをプログラムで管理・制御できます。プロファイル管理は無料です。Proプランでプロファイルを起動し、PlaywrightやPuppeteerで接続、完全なフィンガープリント保護で自動化できます。
import { chromium } from 'playwright';
// Step 1: List available profiles
const profilesRes = await fetch('http://localhost:10108/v1/profiles', {
headers: { 'Authorization': 'Bearer YOUR_API_TOKEN' },
});
const { profiles } = await profilesRes.json();
console.log(`Found ${profiles.length} profiles`);
// Step 2: Launch a profile and get the CDP port
const profileId = profiles[0].id;
const runRes = await fetch(`http://localhost:10108/v1/profiles/${profileId}/run`, {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({ headless: false }),
});
const { remote_debugging_port } = await runRes.json();
// Step 3: Connect Playwright to the running profile
const browser = await chromium.connectOverCDP(
`http://127.0.0.1:${remote_debugging_port}`
);
const context = browser.contexts()[0];
const page = context.pages()[0] || await context.newPage();
// Each profile has a unique fingerprint — automate without detection
await page.goto('https://example.com');
console.log(await page.title());コア機能 — 常に無料
始めるために必要なすべて、アカウント作成不要
FAQ