Skip to content

ブラウザ自動化

TriggerfishはCDP(Chrome DevTools Protocol)を使用した専用の管理Chromiumインスタンスを通じて、 深いブラウザ制御を提供します。エージェントはウェブをナビゲートし、ページと対話し、フォームを入力し、 スクリーンショットを撮り、ウェブワークフローを自動化できます — すべてポリシーの強制のもとで行われます。

アーキテクチャ

ブラウザ自動化はpuppeteer-coreの上に構築されており、CDPを介して管理Chromiumインスタンスに接続します。 すべてのブラウザアクションは、ブラウザに届く前にポリシーレイヤーを通過します。

TriggerfishはGoogle ChromeChromiumBraveを含むChromiumベースのブラウザを自動検出します。 検出はLinux、macOS、Windows、Flatpak環境の標準インストールパスをカバーします。

browser_navigateツールにはhttp://またはhttps:// URLが必要です。ブラウザ内部スキーム

chrome://brave://about:など)はサポートされておらず、代わりにウェブURLを使用するよう ガイダンスとともにエラーが返されます。 :::

ブラウザ自動化フロー:エージェント → ブラウザツール → ポリシーレイヤー → CDP → 管理Chromium

ブラウザプロファイルはエージェントごとに分離されています。管理Chromiumインスタンスは、個人のブラウザと クッキー、セッション、ローカルストレージを共有しません。認証情報の自動入力はデフォルトで無効です。

利用可能なアクション

アクション説明使用例
navigateURLに移動する(ドメインポリシーに従う)リサーチのためにウェブページを開く
snapshotページのスクリーンショットを撮るUIの状態を記録し、視覚的情報を抽出する
clickページ上の要素をクリックするフォームを送信し、ボタンをアクティブにする
type入力フィールドにテキストを入力する検索ボックスに入力し、フォームを完成させる
selectドロップダウンからオプションを選択するメニューから選択する
uploadフォームにファイルをアップロードするドキュメントを添付する
evaluateページコンテキストでJavaScriptを実行する(サンドボックス化)データを抽出し、DOMを操作する
wait要素または条件を待つページが完全に読み込まれてから操作する

ドメインポリシーの強制

エージェントがナビゲートするすべてのURLは、ブラウザが動作する前にドメイン許可リストと拒否リストに 対してチェックされます。

設定

yaml
browser:
  domain_policy:
    allow:
      - "*.example.com"
      - "github.com"
      - "docs.google.com"
      - "*.notion.so"
    deny:
      - "*.malware-site.com"
    classification:
      "*.internal.company.com": INTERNAL
      "github.com": INTERNAL
      "*.google.com": INTERNAL

ドメインポリシーの仕組み

  1. エージェントがbrowser.navigate("https://github.com/org/repo")を呼び出す
  2. URLをコンテキストとしてPRE_TOOL_CALLフックが発火する
  3. ポリシーエンジンが許可/拒否リストに対してドメインをチェックする
  4. 拒否されるか許可リストにない場合、ナビゲーションはブロックされる
  5. 許可された場合、ドメインの分類が検索される
  6. セッションTaintがドメインの分類に合わせてエスカレートする
  7. ナビゲーションが続行する

SECURITY ドメインが許可リストにない場合、ナビゲーションはデフォルトでブロックされます。

LLMはドメインポリシーをオーバーライドできません。これにより、機密データを公開したり不要な アクションをトリガーしたりする可能性のある任意のウェブサイトへのアクセスをエージェントから 防ぎます。 :::

スクリーンショットと分類

browser.snapshotで撮られたスクリーンショットは、セッションの現在のTaintレベルを継承します。 セッションがCONFIDENTIALでTaintされている場合、そのセッションからのすべてのスクリーンショットは CONFIDENTIALとして分類されます。

これは出力ポリシーに影響します。CONFIDENTIALとして分類されたスクリーンショットはPUBLIC チャンネルに送信できません。PRE_OUTPUTフックが境界でこれを強制します。

スクレイピングされたコンテンツとリネージ

エージェントがウェブページからコンテンツを抽出するとき(evaluate経由、テキスト読み取り、 または要素解析)、抽出されたデータは:

  • ドメインに割り当てられた分類レベルに基づいて分類される
  • ソースURL、抽出時刻、分類を追跡するリネージレコードが作成される
  • セッションTaintに寄与する(Taintはコンテンツの分類に合わせてエスカレートする)

このリネージ追跡により、データが数週間前にウェブページからスクレイピングされた場合でも、 常にデータの出所をたどることができます。

セキュリティコントロール

エージェントごとのブラウザ分離

各エージェントは独自のブラウザプロファイルを持ちます。これは以下を意味します:

  • エージェント間でクッキーが共有されない
  • ローカルストレージやセッションストレージが共有されない
  • ホストブラウザのクッキーやセッションへのアクセスがない
  • 認証情報の自動入力がデフォルトで無効
  • ブラウザ拡張機能が読み込まれない

ポリシーフックインテグレーション

すべてのブラウザアクションは標準のポリシーフックを通過します:

フック発火するタイミングチェックする内容
PRE_TOOL_CALLすべてのブラウザアクションの前ドメイン許可リスト、URLポリシー、アクション権限
POST_TOOL_RESPONSEブラウザがデータを返した後レスポンスを分類し、セッションTaintを更新し、リネージを作成
PRE_OUTPUTブラウザコンテンツがシステムを出るときデスティネーションに対する分類チェック

リソース制限

  • ナビゲーションタイムアウトにより、ブラウザが無期限にハングするのを防ぐ
  • ページ読み込みサイズ制限により、過剰なメモリ消費を防ぐ
  • 同時タブ制限がエージェントごとに強制される

エンタープライズコントロール

エンタープライズデプロイメントには、ブラウザ自動化に関する追加コントロールがあります:

コントロール説明
ドメインレベルの分類イントラネットドメインは自動的にINTERNALとして分類される
ブロックドメインリスト管理者が管理する禁止ドメインのリスト
スクリーンショット保持ポリシーキャプチャされたスクリーンショットの保存期間
ブラウザセッション監査ログコンプライアンスのためのすべてのブラウザアクションの完全ログ
ブラウザ自動化を無効にする管理者は特定のエージェントまたはロールに対してブラウザツールを完全に無効にできる

例:ウェブリサーチワークフロー

ブラウザ自動化を使用した典型的なエージェントワークフロー:

1. ユーザー:  "example-competitor.comの競合他社の料金を調査してください"

2. エージェント: browser.navigate("https://example-competitor.com/pricing")
              -> PRE_TOOL_CALL:ドメイン"example-competitor.com"が許可リストに対してチェックされる
              -> 許可、PUBLICとして分類
              -> ナビゲーション続行

3. エージェント: browser.snapshot()
              -> スクリーンショット撮影、セッションTaintレベル(PUBLIC)で分類

4. エージェント: browser.evaluate("document.querySelector('.pricing-table').innerText")
              -> テキスト抽出、PUBLICとして分類
              -> リネージレコード作成:source=example-competitor.com/pricing

5. エージェント: 料金情報をまとめてユーザーに返す
              -> PRE_OUTPUT:PUBLICデータからユーザーチャンネルへ -- ALLOWED

各ステップはログに記録され、分類され、監査可能です。