browser-probe について
browser-probe は、web CLI で CDN のボット対策によるブロックを調べるスキルです。複数のブラウザー設定を試し、後続の web コマンドで使うレシピを保存します。
主な機能
- 01最大5種類のブラウザー設定を試行
- 02ブロックの兆候を検出
- 03ブラウザーレシピを保存
- 04失敗時の結果と選択肢を報告
活用シーン
- 01ウェブ自動化前のページブロック診断
- 02複数の web コマンドで設定を再利用
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ adobe/ skills --skill browser-probeインストール後、Claude Code で/browser-probeを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.releaserc.jsonCHANGELOG.mdpackage.jsonreferences/stealth-config.md詳細
Browser Probe
CDN のボット対策によってヘッドレス Chrome がブロックされていることを検出し、ほかの web コマンドで使うブラウザレシピを生成します。
Requirements
Node 22+ と playwright-cli >= 0.1.20 が PATH 上に必要です(playwright-cli --version)。
web CLI の場所を一度だけ特定します。
# <skill-dir> is the directory containing this SKILL.md
WEB=$(command -v web || echo "node <skill-dir>/../../cli/dist/web.mjs")
その後、$WEB … を実行します。標準出力に JSON ドキュメントをちょうど 1 つ出力するため、
$WEB … > file.json として安全に保存できます。
公開済みの場合のフォールバック:npx -y @adobe/web-cli。絶対パスの <skill-dir> を使用してください。そこへ cd しないでください。
セッション。 WEB_SESSION または PLAYWRIGHT_CLI_SESSION が設定されている場合は、--session を渡さないでください。すべての web コマンドがそのブラウザを使用し、開いたままにします。それ以外の場合は、1 回限りの実行($WEB page tree "$URL" で専用のブラウザを開いて閉じます)を行うか、ブラウザを起動して生成された名前を再利用します。
S=$($WEB browser open "$URL" | jq -r .session) を実行してから、--session "$S" を指定します。
固定のセッション名を決して作らないでください。
使用するタイミング
web コマンドが終了コード 3(ブロック)で終了した場合、ページがブロック状態または空で返ってきた場合(403、
「アクセス拒否」、「CAPTCHA」)、またはボットをブロックすることが知られているサイトを自動化する前に使用します。
コマンド
$WEB probe "$URL" [--output <dir>]
最大 5 つのブラウザー構成を試し、最初に成功した構成で停止します。
- default:ヘッドレス Chromium(ベースライン)
- stealth:ヘッドレス Chromium + JS ステルス初期化スクリプト(
navigator.webdriver、プラグイン、言語をパッチ適用) - stealth-ua:ステルス + User-Agent のオーバーライド(HTTP UA ヘッダーから
HeadlessChromeを削除) - chrome:システムの Chrome + ステルス + UA のオーバーライド(TLS フィンガープリントの検出に対処)
- persistent:システムの Chrome + ステルス + UA のオーバーライド + 永続プロファイル(Cookie/セッションのチャレンジに対処)
進行状況は標準エラー出力に表示されます。--output 配下(デフォルトは ./.web)に次のファイルが作成されます。
probe-<id>/probe-report.json と、成功時は probe-<id>/browser-recipe.json です。パスは recipePath として出力されます。--save-recipe を指定すると、レシピは代わりに --recipe(デフォルトは
./recipe.json)に保存され、ほかの種類はそのまま保持して probe エントリが置き換えられます。
JSON の読み方
{ report: { url, timestamp, steps, firstSuccess, detectedSignals }, recipePath }
firstSuccessが null 以外の場合、その構成で成功しており、それが必要十分な最小構成です。recipePathはレシピを指します。headerErrorがあるステップではレスポンスヘッダーを読み取れなかったため、detectedSignalsが不完全な場合があります。その旨をレポートに記載してください。detectedSignalsを references/stealth-config.md のプロバイダーシグネチャテーブルと照合し、ブロックが発生した理由を確認します。
終了コード 3(BLOCKED):すべてのステップでブロックされ、レシピは書き込まれません。設定が壊れた状態のまま続行しないでください。次のように報告します。
Browser probe failed for <url>. No headless configuration could load the page.
Tried: default, stealth, stealth-ua, chrome, persistent
Detected signals: <detectedSignals>
Options:
1. Use --headed for manual browser interaction
2. Provide pre-captured data (DOM snapshot, screenshots) manually
3. Check if the URL requires authentication or VPN access
成功した場合は次のように報告します。
Browser probe complete for <url>.
Working config: <firstSuccess>
Detected: <detectedSignals or "no bot protection detected">
Recipe: <recipePath>
連携:レシピを使用する
レシピを一度保存すると、すべてのブラウザーコマンド(browser open、page *、ext launch)は、--recipe <file>、$WEB_RECIPE、または存在する場合は ./recipe.json からそのレシピを読み込んで起動します。
$WEB probe "$URL" --save-recipe # writes ./recipe.json
$WEB page tree "$URL" # picks it up
S=$($WEB browser open "$URL" | jq -r .session)
--save-recipe を指定しない場合は、出力されたパスを渡します:--recipe "$($WEB probe "$URL" | jq -r .recipePath)"。
レシピはブラウザの起動時に適用されます。すでに開いているセッションには、そのセッション独自の設定が維持されます。
レシピは、種類ごとのエントリ配列を持つ 1 つのオブジェクトです。probe エントリは
{ url, config: { browserName, launchOptions }, persistent, stealth } です(firstSuccess が stealth 以降の場合は stealth: true となり、起動時にステルススクリプトが挿入されます。persistent の場合は persistent: true となります)。page overlays --save-recipe は overlays エントリを追加します。page-prep スキルを参照してください。
代替手段
playwright-cli -s <session> … で同じブラウザを操作できます。