🎯 カスタマイズ可能で検出回避型のクラウドブラウザ。自社開発のChromiumを搭載し、ウェブクローラーAIエージェント向けに設計されています。👉今すぐ試す
ブログに戻ります

エルメスエージェント + スクラップレス:アンチディテクションウェブエージェントのための1ラインCDP統合

James Thompson
James Thompson

Scraping and Proxy Management Expert

06-May-2026

主なポイント:

  • 1行の設定統合。 Nous ResearchによるHermes Agentは、Chrome DevToolsプロトコルに対応した組み込みブラウザツールを備えています。Scrapeless Scraping Browserを指すには、~/.hermes/config.yamlbrowser.cdp_urlの1行を追加するだけです。SDKのインストールもCLIのサブプロセスも、エージェント側のコード変更も不要です。
  • すべてのHermesブラウザアクションはScrapelessクラウドブラウザ内で実行されます。 browser_navigatebrowser_snapshotbrowser_clickbrowser_typebrowser_scrollbrowser_pressbrowser_get_imagesbrowser_visionは、Scrapelessクラウドブラウザ内で、居住地プロキシの背後で、各セッションに対して検出防止のフィンガープリンティングが行われます。
  • マルチチャネルリーチ。 Hermesのゲートウェイは、Telegram、Discord、Slack、WhatsApp、Signal、メール、CLIを介してエージェントを公開します。Scrapelessが組み込まれることで、クラウドブラウザは別のスクレイピングエンドポイントを公開することなく、チャット駆動のリサーチ、リード生成、監視ワークフローのバックエンドとなります。
  • 検出防止のクラウドブラウザ、195か国の居住地プロキシ。 Scrapeless Scraping BrowserはJavaScriptのレンダリング、居住地プロキシの出口、ブラウザフィンガープリンティングのカスタマイズ(ユーザーエージェント、タイムゾーン、言語、画面解像度)、セッションの持続性をプラットフォームレベルで処理するため、エージェントはアクセスインフラストラクチャではなく、タスクそのものに集中できます。
  • 直接CDP統合。 HermesのブラウザツールをScrapeless WSSエンドポイントに指すことが統合のすべてです - スキルの投入も、SDKも、サブプロセスも必要ありません。

導入: ローカルChromiumから強化されたクラウドブラウザへ

Hermes Agentは、持続的なメモリ、自律的なスキル作成、マルチチャネルゲートウェイを持つオープンソースの自律型エージェントです。標準でアクセシビリティツリーモデルを使用するブラウザツールが付属しており、ページはインタラクティブ要素にラベル付けされたテキストスナップショットとしてレンダリングされ、LLMはそれらの参照に基づいてナビゲーションやフォーム入力を行います。これは文書検索や基本的なナビゲーションタスクによく機能します。

商業用ウェブは異なる表面を持っています。Cloudflare Turnstile、reCAPTCHA、Akamai Bot Manager、IPレピュテーションリスト、JavaScript専用のSPAが自動化されたクライアントと多くの小売業者、市場、検索結果の間に位置しています。地元のChromiumが無支援で動作していると、これらの層によって自動化トラフィックとして特定されることがよくあります。エージェントがそれ以外で完了できるワークフロー - カテゴリページからの価格取得、公開リストページの監視、認証されたフォームの入力、下流のRAG用の型データセットの抽出 - は、最初の中断で停止します。

Scrapeless Scraping Browserは、Chrome DevToolsプロトコルを介して公開された検出防止のクラウドブラウザです。195か国にわたる居住地プロキシネットワークを備えており(Scrapelessの文書による)、セッションごとにブラウザフィンガープリンティングをランダム化します。HermesのブラウザツールはすでにCDPに対応しています。統合は1行の設定です。この投稿では、配線方法、エージェントが受け入れるプロンプト、およびサイト全体でその組み合わせをスケールさせる「発見 → 抽出」パターンを紹介します。


Scrapeless Scraping Browserの利点

Scrapeless Scraping Browserは、ウェブクローラーやAIエージェント向けに設計されたカスタマイズ可能な検出防止クラウドブラウザです。特にHermes Agentのために、以下の利点を提供します。

  • Chrome DevTools Protocolの面 — HermesのブラウザツールはすでにCDPに対応しています。クラウドブラウザは再コンパイル、設定の散逸、新しいコードパスなしで同じツールコールの背後に組み込まれます。
  • 195か国の居住地プロキシ — 地理的に制約されたクエリは、ローカルユーザーが見るリストを返し、セッションごとにローテーションが行われます。
  • クラウド側のJavaScriptレンダリング — ページは抽出前に完全に水和されるため、SPA、無限スクロールフィード、遅延読み込みパネルがbrowser_snapshotbrowser_visionの一級ターゲットとなります。
  • ブラウザフィンガープリンティングのカスタマイズ — コアパラメータ(ユーザーエージェント、タイムゾーン、言語、画面解像度)はScrapelessの文書に従ってセッションごとに設定可能であり、一貫したアイデンティティはScrapelessのカスタムフィンガープリンティング機能を通じて利用できます。
  • sessionTTL(60〜900秒)およびWSSエンドポイントのsessionNameクエリパラメータによるセッション持続性 — 複数ステップのHermesフローは、ツールコール間で同じウォームブラウザ、クッキー、およびスクロール位置を再利用します。
  • シングル管理面 — 1つのAPIキー、1つのクラウドアカウント、リプレイ用のダッシュボード側の録画。

無料プランでAPIキーを取得するには、Scrapelessにサインアップし、私たちの公式コミュニティに参加してください。
Scrapeless公式Discordコミュニティ
Scrapeless公式Telegramコミュニティ


前提条件

  • Hermesエージェントがインストールされました。 公式インストーラーはLinux、macOS、WSL2、およびAndroidのTermuxをサポートしています: curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash。初回起動時にセットアップウィザードが実行されます。
  • ScrapelessアカウントとAPIキーScrapelessにサインアップし、設定 → APIキー管理からキーをコピーします。
  • Python 3.11 以上 — Hermesの実行環境要件です。
  • チャットモデルAPIキー — Hermesはプロバイダー非依存です(Nous Portal、OpenRouter、NVIDIA NIM、Xiaomi MiMo、および任意のカスタムOpenAI互換エンドポイント)。既に接続されているプロバイダーを設定します。
  • ~/.hermes/config.yamlを編集する基本的な知識またはHermesのCLIサブコマンドを実行する能力。

インストール

完全なセットアップは4つのサブステップから成り立っています。それぞれは独立して検証できるので、先に進む前に一時停止して確認できます。

1. Scrapeless APIキーを取得する

Scrapelessにサインアップし、ダッシュボードを開き、設定 → APIキー管理からキーを作成します。その値をコピーします — ステップ2でHermesの設定に入れます。

2. HermesのブラウザツールをScrapeless WSSエンドポイントに設定する

~/.hermes/config.yamlを開き(存在しない場合はファイルを作成)browser.cdp_url行を追加します。Scrapeless CDPエンドポイントはAPIキー、プロキシ国、およびセッションTTLをクエリパラメータとして受け入れます:

yaml Copy
# ~/.hermes/config.yaml
browser:
  cdp_url: "wss://browser.scrapeless.com/api/v2/browser?token=YOUR_SCRAPELESS_API_KEY&proxyCountry=US&sessionTTL=600"

この1行で、すべてのHermesブラウザツール呼び出し — browser_navigatebrowser_snapshotbrowser_clickbrowser_typebrowser_scrollbrowser_pressbrowser_get_imagesbrowser_vision — がScrapelessクラウドブラウザを通過します。Hermesが@e1@e2@e3にラベル付けするために使用するアクセシビリティツリーの表現は、クラウドブラウザのレンダリングから生成されるため、既存のプロンプトやスキルはそのまま機能します。

YAMLを手で編集するのが不便な場合、CLI形式の/browser connect "wss://browser.scrapeless.com/api/v2/browser?token=YOUR_SCRAPELESS_API_KEY&proxyCountry=US"が、現在のセッション用の同じことを行い、持続性はありません。

3. 設定ファイルの外にAPIキーを設定する(推奨)

共有リポジトリやマルチユーザーシェルの場合、秘密情報をYAMLの外に維持します。Hermesの設定は${VAR}代入をサポートしています;キーを一度エクスポートし、URLから参照します:

macOS / Linux(bashまたはzsh)~/.zshrcまたは~/.bashrcに追加:

bash Copy
export SCRAPELESS_API_KEY="your_api_token_here"
source ~/.zshrc          # または ~/.bashrc

Windows(PowerShell) — 永続的でユーザー範囲:

powershell Copy
[Environment]::SetEnvironmentVariable("SCRAPELESS_API_KEY", "your_api_token_here", "User")

その後、変数を補間するように設定を更新します:

yaml Copy
browser:
  cdp_url: "wss://browser.scrapeless.com/api/v2/browser?token=${SCRAPELESS_API_KEY}&proxyCountry=US&sessionTTL=600"

4. 接続を確認する

Hermesを再起動して新しい設定を反映させ、その後エージェントに尋ねます:

"https://example.comを開いて、そのH1見出しのテキストを教えて。"

成功すれば、"Example Domain"が返されます。エージェントがERR_TUNNEL_CONNECTION_FAILED、401、またはbrowser_navigateでハングアップした場合、最も一般的な原因はAPIキー、プロキシ地域、または余分なスペースが貼り付けられたWSS URLです。


使い方:エージェントにプロンプトを送る

設定行の変更後、あなたはHermesをエージェントに話しかけることでScrapelessを操作します — CDPグルーを書くのではなく。エージェントが探索 → 抽出ループを所有し、ブラウザツールを順番に選びます。Hermesのマルチチャンネルゲートウェイにより、同じプロンプトがTelegram、Discord、Slack、WhatsApp、Signal、メール、またはローカルCLIからも機能します。

ペーストできるプロンプト

あなたが入力する エージェントが行うこと
"https://news.ycombinator.comを開き、タイトル、URL、著者、スコア、コメント数をJSON形式でトップ5のストーリーとして返して。" browser_navigatebrowser_snapshot → タイプ抽出。
"これらの3つのSaaS競合の価格ページを比較し、違いを要約して。" マルチタブナビゲーション、プラン階層のbrowser_get_images、LLM要約。
"https://example.comからホームページと価格ページを東京にいるかのように取得して。" proxyCountry=JPでセッションを再起動し(下の「地域を固定する」を参照)、その後レンダリング。
"このGreenhouseの求人ページを監視し、staff engineerinfraに合う役割を教えて。" ナビゲートし、リスティングブロックのスナップショットを撮り、キーワードで行をフィルターして構造化された行を返す。
"https://example.comの全ページのスクリーンショットを取り、内容を分析して。" browser_navigatebrowser_vision(キャプチャし、マルチモーダルモデルに送信)。
"'<URL>'のコンタクトフォームに私の名前、メールアドレス、短いメッセージを入力してください。ただし、送信前に止めてレビューできるようにしてください。" フォームのスナップショットを撮り、プロンプトフィールドを@e1/@e2/…、browser_type、スクリーンショット、送信箇所で停止します。
"抽出は昨日空でした — セッション録画を有効にして再実行してください、そうすれば再生できます。" WSS URLでsessionRecording=trueを使用して同じフローを再発行します。再生リンクはScrapelessダッシュボードに表示されます。
"'<URL>'のAmazon商品ページをUSエグレスから開き、タイトル、価格、評価、レビュー数を返してください。" ピン留めされたセッション、スナップショット、構造化された抽出。

プロンプトの形成

フレーズ 効果
"ドイツのエグレスを使用してください。" WSS URLでproxyCountry=DEを使用してクラウドブラウザセッションを再起動します。
"次の10分間セッションを温めておいてください。" sessionTTL=600を上げて、マルチステップフローが同じブラウザを再利用できるようにします。
"セッション録画を有効にしてください。" sessionRecording=trueを追加します — ダッシュボードはその実行の再生可能なビデオを表示します。
"生のHTMLではなくマークダウンを返してください。" エージェントはスナップショットをその抽出機を通して処理し、マークダウンビューを返します。
"最終的な送信前に停止してください。" Hermesの組み込みパターン — フォームを操作し、スクリーンショットを撮り、送信の参照で停止します。

手順1~5は、裏側の参考資料です。一度読んで、発見 → 抽出パターンがどのように構成されるかを確認してください。その後、オペレーターがチャットから渡すリクエストに適用するようにエージェントを信頼してください。


ステップ1 — Scrapelessスクレイピングブラウザに接続

接続はインストールステップからのWSS URLです。Hermesブラウザツールは初回使用時にそれをダイヤルし、セッションのライフタイムにわたって同じソケットを再利用します。

yaml Copy
# ~/.hermes/config.yaml
browser:
  cdp_url: "wss://browser.scrapeless.com/api/v2/browser?token=${SCRAPELESS_API_KEY}&proxyCountry=US&sessionTTL=600"

3つのクエリパラメーターが主に機能します:

  • token — Scrapeless APIキー。必須。
  • proxyCountry — 居住者プロキシの国(ISO-3166アルファ-2、例: US, DE, JP, GB)。デフォルトはグローバルプールになっているため、地理的なリスティングのためにピン留めします。
  • sessionTTL — 最後のコマンドの後にクラウドブラウザがどれくらいの間生存するか(秒単位)。範囲は60〜900。高いTTLはマルチステップフローに適しており、1回限りの抽出にはデフォルトの60が適しています。

最初のダイヤルで一時的なos error 10054ERR_TUNNEL_CONNECTION_FAILED、または503が発生することがあります。これは、アンチボットインフラストラクチャがブラウザが完全に起動する前に新しいセッションをリセットする場合です。失敗したプロンプトを再発行して再試行します。プロダクションワークフローの場合は、以下のFAQエントリーが明示的な再試行パターンをカバーしています。


ステップ2 — browser_navigate + browser_snapshotで発見

ページを開き、抽出の前にアクセシビリティツリーとして読み取ります。スナップショットは、すべてのインタラクティブ参照(@e1@e2@e3、…)と周辺のテキストコンテンツのテキストラベルを返します。これにより、エージェントはCSSセレクタを推測することなく適切な要素を選択できます。

text Copy
あなた: https://example.com/productsを開いてページのスナップショットを撮ってください。
エージェント: browser_navigate "https://example.com/products"
           browser_snapshot
           [@e1 = 検索入力、@e2 = ソートドロップダウン、
            @e3..@e22 = タイトル + 価格 + 評価参照を含む商品カードのアクセシビリティツリーを返します]

browser_snapshotは荷重支え型呼び出しです。これは、CDPスタイルのライブページをエージェントがターンバイターンで推論できるものに変えます。これをスキップすると、エージェントは生のHTMLを切り取る必要があり、それはより脆弱でトークンを多く使用します。スナップショットは発見 → 抽出パターンの発見ステップであり、以下のすべての抽出はまずそれが実行されたことを前提としています。


ステップ3 — 構造化されたプロンプトで抽出

スナップショットを手に持てば、抽出は通常のLLMツールコールです。エージェントは参照と周辺のテキストを読み取り、必要なフィールドを選択して型付きレコードを返します。CSSセレクタやJS評価は不要で、スナップショットにはモデルが必要とするデータがすでに含まれています。

text Copy
あなた: スナップショットから、タイトル、価格、評価、製品URLを持つ上位10商品をJSONとして返してください。
エージェント: [10行のJSON配列を返します; 欠けているフィールドはnull]

非自明なページ(マルチタブカタログ、無限スクロールフィード、A/Bレンダリングされたバリアント)については、browser_scrollで遅延読み込みパネルを活性化し、再スナップショットを取ります。クラウドブラウザがJSレンダリングを処理し、Hermesがループを処理します。


ステップ4 — マルチステップインタラクションを実行

同じブラウザツールがフォームの入力、ナビゲーションチェーン、および人間のレビューを処理します。パターン: スナップショット → 参照を特定 → 行動 → スナップショット → 次の参照。

text Copy
あなた: https://app.example.com/contactを開いて、名前、メール、メッセージを入力し、フォームのスクリーンショットを撮ってください。送信前に止めてレビューさせてください。
エージェント: browser_navigate "https://app.example.com/contact"
           browser_snapshot
           # @e1 [入力] "フルネーム", @e2 [入力] "メール",
           # @e3 [テキストエリア] "メッセージ", @e4 [ボタン] "送信"
           browser_type @e1 "ジェーン・ドー"
           browser_type @e2 "jane@example.com"

ブラウザタイプ @e3 "こんにちは、私は…について話したいです…"
ブラウザビジョン # レビューのためにフルページレンダリングをキャプチャ
# 停止 — @e4が押されるまで人間はキャプチャされたページを承認しない


リアルな入力イベントはクラウドブラウザで発火するため、クライアントサイドのバリデーションは人間の訪問者とまったく同じように行われます。停止・送信前のパターンは、リアルな世界での結果を伴うすべてのアクション(求人申請、ベンダーオンボーディング、支払いフォーム)に対して推奨されるデフォルトのプロセスです。


ステップ5 — 地域を固定し、ターン間でセッションを持続させる

リスティングがエグレス地域によって異なるターゲット(Google SERP、Amazonの市場別、ホテル/フライト予約、ローカルビジネスディレクトリ)に対しては、proxyCountry をユーザーの意図する地域に固定します。複数のエージェントターンにわたって温かいクッキーとスクロール位置が必要なマルチステップフロー(ページネーションされたSERP、認証されたダッシュボード、マルチページフォーム)については、sessionTTL を高く設定し、同じ sessionName を再利用します。

yaml Copy
# 東京エグレス、15分間の温かいセッション、再生可能なビデオ
ブラウザ:
  cdp_url: "wss://browser.scrapeless.com/api/v2/browser?token=${SCRAPELESS_API_KEY}&proxyCountry=JP&sessionTTL=900&sessionName=tokyo-research&sessionRecording=true"

会話の途中で地域を切り替えるのは、/browser connect で簡単です — Hermes は現在のソケットを切断し、新しいURLをダイヤルし、次の browser_navigate が新しい出口を通して実行されます。録画は無人パイプラインにとって最も効果的なフラグです:すべての実行はScrapelessダッシュボードに再生可能なビデオとして表示されるため、エージェントが空の抽出を報告したときにオペレーターはクラウドブラウザが実際に何をレンダリングしたのかを見ることができます。


ライブウェブに対してこれが実行されたときの期待

  • 水和のタイミングはサイトによって異なる。 セカンダリXHRを通じてコンテンツを水和するSPAでは、スナップショットが最終DOMを反映する前に browser_scroll または短い待機が必要な場合があります。フィールドが一貫してnullの場合は再スナップショットを実行します。
  • セレクタなしの抽出はCSSセレクタよりも耐障害性があるが、レイアウトのドリフトには免疫ではない。 サイトが新しい列を追加したりボタンの名前を変えたりすると、アクセシビリティツリーは変化するため、エージェントにまじゅに再発見を促す方が保存されたスキルにエンコードするよりも良いです。
  • アンチボットのインタースティシャルはスナップショットでリダイレクトとして表示される。 サイトがクラウドブラウザが透過的に完了できないCloudflareやAkamaiのチャレンジをフロントロードする場合、スナップショットはターゲットではなくチャレンジページを報告します。フィンガープリントを広げるか他のプロキシ地域を固定してください。
  • browser_visionbrowser_snapshotを補完する。 視覚的に複雑なページ(画像として埋め込まれた価格表、チャート、インフォグラフィック)では、ビジョンツールが最適なエスケープハッチです — アクセシビリティテキストではなく、スクリーンショットをマルチモーダルモデルに送信します。
  • セッション録画は高い効果を持つ。 WSS URLで sessionRecording=true を設定すると、「エージェントが何か変なことをした」ということがScrapelessダッシュボードでクリック可能なビデオになります。料金ページを確認して、プランに録画が含まれているか確認してください。

FAQ

住宅用プロキシは必要ですか?
はい、意味のあるアンチボット保護があるサイト(大多数の小売業者、市場、SERPエンドポイント)には必要です。ScrapelessのWSSエンドポイントはデフォルトで住宅用プールを経由しています;proxyCountryクエリパラメータはエグレス国を固定します。

最初の接続が ERR_TUNNEL_CONNECTION_FAILED または os error 10054 を返します。どうすればいいですか?
どちらも一時的なセッション立ち上げエラーであり、通常は再試行で解決します。失敗したプロンプトを再発行してください;最初の失敗でバウンスしてはならないプロダクションワークフローの場合は、失敗したプロンプトを小さな再試行ループでラップし、指数バックオフ(2秒、5秒、15秒)を使用します。

サイトがアクセスを拒否します。どうすればいいですか?
まず、再試行してください — アンチボットレイヤーはセッション再起動後にクリアされることがよくあります。ページが持続的にブロックする場合は、proxyCountryを他の地域に変更し、/browser connect を再発行してフレッシュなフィンガープリントを生成するか、プラットフォームレベルでブロックが発生しているかを確認するためにScrapelessサポートに連絡してください。

セレクタが頻繁に壊れます。DOMの回転をどうやって耐え抜きますか?
生のHTMLをCSSセレクタでスライスするのではなく、browser_snapshotを使用してください。アクセシビリティツリー表現はレイアウトドリフトに対してより安定しており、エージェントは各ターンで再発見を行い、ハードコードされたパスに依存しません。

ホストあたり何人の同時ワーカーが必要ですか?
Scrapelessはホストあたりの固定された同時実行数を公開していません;レート制限はプラットフォーム側で処理されます。マルチホストパイプラインについては、単一のドメインに集中するのではなく、ホストごとに独立したエージェントループを実行してください — そしてスケールアウトする前に、Scrapelessダッシュボードでアカウントティアの同時実行数を確認してください。

AIエージェントなしで使えますか?
はい。Scrapeless WSS エンドポイントは単なる CDP です — どの Puppeteer または Playwright スクリプトも puppeteer.connect({ browserWSEndpoint: ... }) または chromium.connectOverCDP(...) で接続し、同じクラウドブラウザーを取得します。対話型リサーチやマルチチャネルリーチが重要な場合は Hermes が推奨される経路であり、CDP エンドポイントは下位レベルのフォールバックです。

Hermes を別のエージェントに交換できますか?
はい。カスタム CDP エンドポイントをサポートする任意のエージェント(Browserbase スタイルの統合、Browser Use、カスタム Playwright/Puppeteer パイプライン)が同じ WSS エンドポイントに接続します。統合の表面はプロトコルであり、クライアントではありません。

複数のエージェントターンにわたってクッキーとログイン状態を保持するにはどうすればよいですか?
sessionTTL を長めの値 (300–900秒) に設定し、セッションに安定した sessionName を付けて、呼び出しの間に接続を再起動しないようにします。クラウドブラウザーは、セッションの期間中に同じブラウザープロファイル、クッキー、およびスクロール位置を保持します。

クラウドブラウザーが実際にレンダリングしたものをどこで確認できますか?
WSS URL に sessionRecording=true を追加します。すべての実行は Scrapeless ダッシュボードに再生可能なビデオとして表示されるため、空の抽出や驚きのインタースティシャルがエージェントを計測することなく、端から端まで可視化されます。

Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。

最も人気のある記事

カタログ