AIサンドボックスはブラウザ自動化を実行できますが、適合性はワークフローに実際に何が必要かに依存します。Novita Sandboxのようなサンドボックスは、エージェントに完全な分離されたLinux環境を提供します。ヘッドレスブラウザをインストールし、PlaywrightやPuppeteerを実行し、ページを巡回し、データを抽出し、フォームを送信し、結果をスクリーンショットとして取得できます。これらはすべて、エージェントが制御する一時的なコンテナ内で行われます。ただし、永続的な管理ブラウザインフラストラクチャ、セッションプーリング、レジデンシャルプロキシ、または専用ブラウザ自動化プラットフォームのようにタスク間で存続する長期間のステートフルブラウザは提供されません。
このガイドでは、AIサンドボックスが適しているシナリオ、適さないシナリオ、事前に知っておくべきハードリミット、そしてNovita Sandboxがそれぞれをどのように処理するかを説明します。
「サンドボックス内のブラウザ自動化」が実際に意味すること
AIサンドボックス内でブラウザ自動化を実行する場合、ホスト型ブラウザクラウドサービスを使用しているわけではありません。ヘッドレスブラウザバイナリを分離されたLinux環境にインストールし、自分で実行します。エージェント(またはコード)は、Playwright、Puppeteer、Selenium、または同等のライブラリを呼び出してブラウザを制御します。サンドボックスはOS、CPUとメモリ、ファイルシステム、ネットワークインターフェースを提供します。ブラウザ、自動化ロジック、指示はユーザーが提供します。
このモデルには実際の利点があります:
- 完全な環境制御。 任意のブラウザバージョン、拡張機能、依存関係をインストールできます。事前に作成されたイメージにロックされることはありません。
- タスクごとの分離。 各サンドボックスは独立したコンテナです。クラッシュしたスクリプト、ダウンロードをトリガーするページ、ファイルシステムを変更するエージェントアクションはコンテナ内に留まり、他に影響を与えません。
- LLMからのプログラム可能。 サンドボックスはシェルとファイルシステムを公開するため、LLMはブラウザ自動化スクリプトをその場で作成し、実行し、出力を観察し、専有のブラウザAPIサーフェスを経由せずに反復できます。
Novita Sandboxは平均200ミリ秒未満で起動し(Novita Sandboxドキュメント、2026-06-28確認)、実際のvCPUとメモリ使用量に基づいて秒単位で課金されるため(価格、2026-06-28確認)、ブラウザタスクごとに新しい環境を起動するオーバーヘッドは低くなります。
AIサンドボックスが適しているシナリオ
エージェント型Webリサーチと単発のスクレイピング
エージェントがページにアクセスし、構造化データを抽出し、リンクをたどり、結果を返す必要がある場合、サンドボックスは自然な選択肢です。エージェントはPlaywrightスクリプトを作成または実行し、ヘッドレスChromiumインスタンスを起動し、必要なものを収集し、サンドボックスは破棄されます。分離、再現性が得られ、無関係なタスク間でクッキーやセッション状態が漏れるリスクがありません。
ワークフロー例:
from novita_sandbox.code_interpreter import Sandbox
sandbox = Sandbox.create()
script = """
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://example.com/pricing")
text = page.inner_text("table")
print(text)
browser.close()
"""
result = sandbox.commands.run(
f"pip install playwright -q && playwright install chromium --with-deps -q && python3 -c '{script}'"
)
print(result.stdout)
sandbox.kill()
このパターンは、各タスクが自己完結型である競合調査、データ収集、フォーム検査、リンククローリングに適しています。
サンドボックス化された評価とエージェントテスト
ブラウザ使用エージェントをテストしたり、AIがWebタスクをどのように処理するかを評価する場合、実行間でリセットされ、副作用を蓄積しない環境が必要です。サンドボックスは設計上それを提供します。各評価実行はクリーンな状態で開始されます。前回の実行からのキャッシュされた認証情報、残ったクッキー、変更されたシステムファイルはありません。
browser-useやSkyvernのようなツールは、まさにこの理由でサンドボックス環境内で実行されるように設計されています。サンドボックスはエージェントが行動する制御された表面であり、何が起こるかを観察してから破棄します。
プロトタイプとデモワークフロー
LLM推論とWeb操作を組み合わせた概念実証(価格監視、フォーム入力、Web QAボットなど)を構築する場合、サンドボックスを使用すると、永続的なインフラストラクチャをプロビジョニングすることなく迅速に反復できます。ブラウザ自動化ロジックを変更し、分離されたコンテナでテストし、完了したら環境を破棄できます。
たまたまWebが関わるコード実行
エージェントが主に計算を行っているが、時々ページを取得したり、レンダリングされたDOMを解析したり、URLを確認する必要がある場合、サンドボックスはコード実行機能の自然な拡張としてこれを処理します。付随的なWebアクセスのために別のブラウザサービスは必要ありません。
構築する前に理解すべきハードリミット
セッションの永続性はデフォルトで一時的
Novita Sandboxインスタンスは sandbox.kill() 後に状態を保持しません。クッキー、localStorage、キャッシュされた認証トークン、ブラウザプロファイル、ダウンロードファイルはサンドボックス終了時に消えます。ワークフローが複数のエージェントターンにわたって持続するログインブラウザセッションを必要とする場合は、次のいずれかを行う必要があります:
- セッションの間サンドボックスを存続させる(Novita Sandboxドキュメントでは最大24時間、2026-06-28確認)、または
- ブラウザの状態を明示的に保存および復元する(Playwrightは
storage_stateのエクスポート/インポートをサポート)、または - ワークフローのその部分に専用のステートフルブラウザプラットフォームを使用する。
セッション継続のために長時間実行サンドボックスを使用することは可能ですが、ブラウザ操作の合間にアイドルコンピューティングに対して支払うことを意味します。ユーザーが一度ログインし、その後エージェントが何時間も操作するワークフローの場合、セッション管理を備えた専用ブラウザサービスの方が通常はコスト効率が高くなります。
ネットワークアクセスはデプロイ設定を反映する
デフォルトでは、Novita Sandboxインスタンスはパッケージインストールとページリクエストのためにアウトバウンドインターネットアクセスを持っています。独自のVPC(AWSおよびGCPで利用可能)内にNovita Sandboxをデプロイする場合、ネットワーク動作を厳格化できます。その構成では、egressルールを制御し、内部URLのみにアクセスを制限したり、独自のプロキシ経由でトラフィックをルーティングしたりできます。
これがブラウザ自動化にとって意味すること:レジデンシャルプロキシ、IPローテーション、特定の地理的位置のegressアドレスが必要な場合、自分で設定する必要があります(例えば、Playwrightの起動オプションでプロキシを設定するなど)。サンドボックスには組み込みのプロキシレイヤーは含まれていません。
ブラウザワークロードにはリソースサイジングが重要
ヘッドレスChromiumは軽量ではありません。コンテナ内でブラウザを実行すると、エージェントが他のことをしている上にメモリプレッシャーが加わります。Novita Sandboxは実際のvCPUとメモリに基づいて課金されるため、ブラウザタスクが大きいと純粋な計算タスクよりもコストがかかります。安定したヘッドレスブラウザセッションには少なくとも1〜2 GBのメモリを割り当ててください。並行ブラウジング(複数のタブや同時ページ)の場合は、それに応じてサイズを調整してください。
インストールにレイテンシが追加される
新しいサンドボックスにPlaywrightとそのブラウザバイナリを初めてインストールする場合、ネットワーク状況や完全なブラウザパッケージを取得するかどうかに応じて30〜90秒かかります。レイテンシに敏感なワークフローの場合は、依存関係をカスタム環境イメージに組み込むか、パイプラインでキャッシュしてください。起動時間が重要な場合は、計画してください。
安全性の境界
サンドボックス内でブラウザ自動化を実行すると、意味のある分離制御が提供されますが、あらゆる脅威モデルに対する絶対的な封じ込めを保証するものではありません。以下は、分離が実際にカバーする内容です。
ファイルシステムの分離とダウンロード処理。 各サンドボックスインスタンスは独自のファイルシステムを取得します。ブラウザがファイルをダウンロードする、スクリプトがディスクに書き込む、エージェントアクションが設定ファイルを変更する場合、それらはすべてコンテナ内に留まります。ブラウザがデフォルトのダウンロードディレクトリに保存するものも含まれます。エージェントがダウンロードファイルを処理する必要がある場合(CSVの解析、PDFの検査など)、サンドボックス内で安全に実行できます。ダウンロードしたコンテンツを呼び出し元に戻す必要がある場合は、セッションが終了する前にサンドボックスファイルAPIを使用して明示的にコピーしてください。
プロセス分離。 ブラウザプロセスはコンテナ内で実行されます。ブラウザでのクラッシュ、メモリリーク、無限ループは他のサンドボックスやホストに影響を与えません。
セッション分離と認証情報の封じ込め。 各タスクはクリーンなコンテナから開始できるため、無関係なタスク間での認証情報、クッキー、localStorage、ブラウザ履歴の暗黙的な共有はありません。これは、異なるユーザーやタスクが同じインフラストラクチャを共有するエージェントワークフローにとって重要です。サービスに認証するセッション(アクセストークン、セッションクッキー、ローカルにキャッシュされた認証情報を取得)は、その値がそのサンドボックスインスタンスのみにスコープされます。
スクリーンショットキャプチャと視覚的出力。 サンドボックス内のヘッドレスブラウザは、Playwright(page.screenshot())またはPuppeteer(page.screenshot())を介してネイティブにスクリーンショットをサポートします。スクリーンショットはサンドボックスファイルシステムに書き込まれ、エージェントが読み取ることができます。これにより、視覚的検証ワークフロー、監査証拠収集、および次のアクションを決定する前にレンダリングされたページ状態を評価するコンピュータ使用スタイルのエージェントループがサポートされます。
DOMアクションのログと再生。 Playwrightの tracing APIを使用すると、すべてのDOM操作(クリック、ナビゲーション、フォーム入力、ネットワークリクエスト)のトレースを記録し、.zip トレースファイルとして保存できます。サンドボックス内で、セッション開始時にトレースを有効にし、自動化を実行し、終了時にトレースを保存します:
context = browser.new_context()
context.tracing.start(screenshots=True, snapshots=True)
page = context.new_page()
# ... 自動化手順 ...
context.tracing.stop(path="/tmp/trace.zip")
保存されたトレースは、ブラウザが行ったことの完全な監査記録です。エージェントはサンドボックスファイルシステムからそれをコピーしてオフラインで確認したり、Playwright Trace Viewerで再生したり、コンプライアンスやQAワークフローに含めることができます。
監査証跡。 監査証拠が重要な長時間のワークフロー(エージェントが許可されたアクションのみを実行したこと、データを不正に持ち出していないこと、予期しないボタンをクリックしていないことを確認する)の場合、サンドボックス分離(爆発半径の封じ込め)とPlaywrightトレーシング(ステップバイステップの記録)を組み合わせることで、封じ込めの保証と人間が確認可能なアクションログの両方が得られます。これは、規制されたワークフロー、ブラウザエージェントのQA、各エピソードで何が起こったかを正確に検査する必要があるRL評価に役立ちます。
分離が保護しないもの。 ブラウザが悪意のあるJavaScriptを返すサイトにアクセスし、エージェントが任意のコードを評価するアクセス権を持っている場合、悪意のあるコードはそのコンテナ内でエージェントプロセスが持つ権限で実行されます。サンドボックスは爆発半径を制限しますが、サンドボックス内のエージェント自体の権限は依然として適用されます。タスクで明示的に必要とされない限り、サンドボックスプロセスに機密性の高い外部リソース(データベース、本番API、クラウド認証情報)への書き込みアクセスを許可しないでください。サンドボックス内で実行されるプロセスには、他のコンピューティング環境と同様に最小権限の原則を適用してください。
「サンドボックスはブラウザ自動化を完全に安全にする」といった表現は避けてください。正しい表現は次のとおりです。サンドボックスは実行を分離し、爆発半径を減らし、ホストレベルの汚染を防ぎます。これは、ほとんどのエージェント型ブラウザ自動化ユースケースにとって意味のある有用な制御のセットです。
代わりに専用ブラウザ自動化ツールを使用する場合
AIサンドボックスが常に正しい答えとは限りません。次の場合は専用ブラウザ自動化プラットフォームに頼ってください:
- セッションプーリングとウォームブラウザインスタンスが必要な場合。 Browserbase、Browserless、Playwright Cloudなどのサービスは、すぐに使用できるブラウザセッションのプールを管理します。高スループットのスクレイピングや、サブ秒のブラウザ可用性が重要なワークフローの場合、リクエストごとに新しいサンドボックスを起動するよりも、そのインフラストラクチャの方が効率的です。
- すぐに使えるレジデンシャルプロキシサポートが必要な場合。 特定のIP地理、ISP多様性、CAPTCHA処理サービスが必要な場合、プロキシ統合が組み込まれたブラウザ自動化プラットフォームの方が良い出発点です。
- ワークフローがコード実行なしで純粋にブラウザ駆動の場合。 エージェントがブラウザを制御するだけで、任意のコードを実行したり、依存関係をインストールしたり、ファイルシステムとやり取りする理由がない場合、完全なLinuxサンドボックス環境は過剰です。
- 非常に長期間のステートフルセッションが必要な場合。 数日間または数週間ウォーム状態を保つ必要があるセッションは、ブラウザセッションの永続性のために構築されたサービスで管理する方が適しています。
境界はおおよそ次のとおりです。エージェントがブラウザをより広範な計算ワークフローの一部として必要とする場合(リサーチ、データ処理、コード生成、テスト)、AIサンドボックスは自然に適合します。ブラウザが製品全体であり、その周りに管理されたインフラストラクチャが必要な場合は、そのために構築されたツールを使用してください。
まとめ:判断基準
| シナリオ | AIサンドボックス | 専用ブラウザツール |
|---|---|---|
| エージェント型Webリサーチ(単発スクレイピング) | はい | 任意 |
| LLM駆動のフォーム入力(単一タスク) | はい | 任意 |
| browser-use / Skyvern エージェント評価 | はい(設計上) | 不要 |
| 数日間持続するセッション | いいえ | はい |
| 高ボリューム並行スクレイピング(100以上同時) | 可能だが高価 | はい |
| レジデンシャルプロキシ / IPローテーション | プロキシ設定でDIY | ビルトイン |
| コード実行 + 時折のWeb取得 | はい | 不要 |
| ブラウザフローのサンドボックスCIテスト | はい | 任意 |
Novita Sandboxを始める方法
SDKをインストール:
pip install novita-sandbox
APIキーを設定:
export NOVITA_API_KEY=your_api_key_here
簡単なブラウザ自動化テストを実行:
from novita_sandbox.code_interpreter import Sandbox
sandbox = Sandbox.create()
result = sandbox.commands.run(
"pip install playwright -q && playwright install chromium --with-deps -q && "
"python3 -c \""
"from playwright.sync_api import sync_playwright; "
"p = sync_playwright().start(); "
"b = p.chromium.launch(); "
"page = b.new_page(); "
"page.goto('https://example.com'); "
"print(page.title()); "
"b.close(); "
"p.stop()\""
)
print(result.stdout)
sandbox.kill()
Novita Sandboxドキュメントでは、VPCデプロイ、リソース設定、ファイルシステムアクセス、browser-useおよびSkyvernエージェントの統合パターンについて説明しています。
結論
AIサンドボックスは、タスクがエージェント駆動型で、コード中心型であるか、タスクごとの分離が有益な場合に、ブラウザ自動化に実用的です。Novita Sandboxは、高速起動、秒単位の課金、必要なヘッドレスブラウザスタックを実行するのに十分な柔軟性を備えたクリーンなLinux環境を提供します。主な制約は、一時的なセッション、組み込みプロキシレイヤーの欠如、ブラウザインストールのレイテンシですが、これらはすべて設計すれば管理可能です。ブラウザセッションを永続的なインフラストラクチャとして大規模に管理する必要があるワークフローの場合は、専用ブラウザ自動化プラットフォームの方が適しています。ほとんどの本番エージェントアーキテクチャは両方を使用します。エージェントの一般的な計算にはサンドボックス、それを必要とするワークフローの部分にはブラウザサービスです。
FAQ
サンドボックス内でクッキーと認証情報はどのように分離されますか?
各サンドボックスインスタンスは、クリーンで空のブラウザプロファイルを取得します。他のサンドボックス実行やホスト環境からのクッキー、保存されたパスワード、セッショントークン、localStorageエントリは引き継がれません。あるタスクがサービスに認証し、セッションクッキーを保存した場合、そのクッキーはそのサンドボックスインスタンス内にのみ存在し、サンドボックスが終了すると破棄されます。別々のサンドボックスインスタンスで同時に実行されるタスクは、共有ブラウザ状態を持ちません。これが、サンドボックス化されたブラウザ自動化をマルチユーザーまたはマルチタスクインフラストラクチャにとって安全にする重要な分離特性です。
Novita Sandbox内でPlaywrightやPuppeteerを実行できますか?
どちらもサンドボックスのLinux環境内で実行できます。pip install playwright && playwright install chromium --with-deps(またはNode.js版)でパッケージとブラウザバイナリをインストールし、スクリプトを通常どおり実行します。初回実行時にはインストールに30〜90秒かかりますので、起動レイテンシが重要な場合は依存関係をキャッシュしてください。
ブラウザ自動化タスクのためにサンドボックスはインターネットアクセスを持っていますか?
デフォルトでは、ページナビゲーションとパッケージインストールのためにアウトバウンドインターネットアクセスが利用可能です。AWSまたはGCP上の独自VPC内にNovita Sandboxをデプロイする場合、egressルールを制御し、必要に応じてトラフィックを制限またはルーティングできます。
複数のエージェントターンにわたってブラウザセッションのログイン状態を維持するにはどうすればよいですか?
ターン間でサンドボックスインスタンスを存続させる(セッションは最大24時間実行可能)か、Playwrightの storage_state を使用して各ターンの終了時にクッキーとlocalStorageをエクスポートし、次のターンの開始時にインポートします。
AIエージェントがサンドボックス内でブラウザを制御するのは安全ですか?
サンドボックスは意味のある分離を提供します。ブラウザプロセス、ファイルシステムへの書き込み、ダウンロードはコンテナ内に留まり、ホストに影響を与えることはできません。最小権限の原則は依然として適用されます。タスクで明示的に必要とされない限り、サンドボックスプロセスに本番データベース、クラウド認証情報、外部APIへの書き込みアクセスを許可しないでください。
AIサンドボックスは、BrowserbaseやBrowserlessのような専用ブラウザ自動化サービスと比較してどうですか?
サンドボックスは、ブラウザのインストールと自動化ロジックを自分で管理する完全なLinux環境を提供します。柔軟ですが、セットアップを管理する必要があり、セッションプーリングはありません。専用ブラウザサービスは、組み込みプロキシサポートとセッション永続性を備えたウォームで管理されたブラウザインスタンスを提供します。ブラウザ自動化がより広範なエージェントワークフローの一部である場合はサンドボックスを、ブラウザインフラストラクチャがコア製品ニーズである場合は専用サービスを使用してください。
Novita Sandboxでブラウザ自動化を実行するコストはいくらですか?
Novita Sandboxは実際のvCPUとメモリ使用量に基づいて秒単位で課金します。ヘッドレスChromiumセッションは通常、少なくとも1〜2 GBのメモリを必要とします。正確な現在の料金については、Novita Sandbox価格ページ(2026-06-28確認)を参照してください。
