AIエージェントが自らウェブサイトを巡回する — ClaudeはPlaywright MCP、ブラウザ使用、クラウドBrowserbaseを利用して、通常のパーサーと同じ壁にぶつかります:1つのアドレスから数十のリクエストを送信すると、ページの代わりにCloudflareのチャレンジが返ってきます。違いは、エージェントは不満を持たず、単にループに入って「存在しないボタンを押そうとする」ことでトークンを消費してしまうことです。
これを解決するのはプロキシです。しかし、エージェントにプロキシを接続するのは意外と難しいことが判明します:インターネット上の半分の指示は、Chromiumが黙って無視する構文を提案しています。以下は、2026年の最も一般的なスタックのための動作する設定と、誰もがつまずく罠の分析です。
誰が必要とするのか
エージェントを起動し、次の症状の1つを経験している人のためのガイド:
- エージェントは10〜20ステップを実行しますが、その後の各ステップでキャプチャや「人間であることを確認してください」というページが表示されます。
- エージェントが見ているコンテンツがあなたとは異なります:サイトはサーバーのIPアドレスに基づいて価格、検索結果、商品の在庫を表示し、必要な国ではありません。
- エージェントはクラウド(VPS、GitHub Actions、コンテナ)で起動されており、ホスティングプロバイダーのデータセンターのアドレスがすでにボットとしてマークされています。
- ログインとパスワードを持つプロキシを設定したが、ブラウザはまるでプロキシが存在しないかのように起動します。
まだ「なぜエージェントがブロックされるのか」という段階にいる場合は、まずアンチボットシステムがエージェントブラウザを人間と区別する方法についての分析を読んでください:そこには検出信号についての情報があり、ここでは接続の実践的な内容があります。
罠 №1: Chromiumはプロキシの文字列でログインとパスワードを受け入れない
最も一般的なエラーであり、これが人々に数時間のデバッグを強いる原因です。プロバイダーからの典型的な文字列の形式はuser:pass@host:portです。これをブラウザの起動フラグに挿入します:
--proxy-server="http://user:[email protected]:8080"
しかし、何も機能しません。Chromiumは--proxy-serverフラグ内での認証情報の送信をサポートしていません:コンソールにはサポートされていないプロキシに関するエラーが表示され、トラフィックは通過します。クレデンシャルを削除してhost:portのみを残すと、ブラウザは通常モードでログインとパスワードの要求を表示するシステムウィンドウを示します — しかし、ヘッドレスモードではウィンドウが存在せず、誰もそれを操作できません。
これから3つの動作する方法が導き出され、意識的に選択する必要があります:
- IPによる認証(ホワイトリスト)。 エージェントが実行されているマシンのアドレスをプロバイダーの管理画面でホワイトリストに追加し、その後はログインとパスワードなしで、単純な文字列
host:portで接続します。--proxy-serverフラグは意図した通りに機能し、ヘッドレスは他に何も要求しません。ProxyCoveは両方の方法 — ログイン:パスワードとIPホワイトリストの両方を同時にサポートしているため、エージェントにはホワイトリストを設定し、手動タスクにはパスワードを残すことができます。 - APIレベルでクレデンシャルを渡す。 Playwright、Puppeteer、およびbrowser-useは、
usernameとpasswordを別々のフィールドとして受け取ることができます — これはコマンドラインフラグとは異なるメカニズムであり、機能します。自分でエージェントのコードを書くときに適しています。 - ローカルリレー。 パスワードなしでプロキシを立ち上げ、パスワード付きのアップストリームにリクエストを転送し、エージェントにローカルアドレスを指定します。ホワイトリストが利用できない場合の選択肢:たとえば、マシンのIPが変動する場合です。
Playwright MCP: 実際に機能する設定
MicrosoftのPlaywright MCPは、真のブラウザが必要なエージェントのためのデファクトスタンダードです。プロキシはMCPクライアントの設定内でサーバーの引数として指定されます:
{"mcpServers":{"playwright":{"command":"npx","args":["@playwright/mcp@latest","--browser","chromium","--headless","--proxy-server","http://gate.example.com:8080","--proxy-bypass",".local,.internal","--isolated","--viewport-size","1920x1080"]}}}
ここで重要なポイントは:
--proxy-serverはHTTPおよびSOCKS5アドレスをsocks5://host:portの形式で受け入れます。認証情報なしで — 上記の罠を参照。--proxy-bypassは、プロキシを通過するドメインのカンマ区切りリストです。装飾的なオプションではありません:エージェントに内部サービスやローカルAPIがある場合、それらをレジデントチャネルを通じて送信するのは無駄なトラフィックです。--isolatedは、メモリ内にプロファイルを保持し、ディスクに書き込みません。各タスクがクリーンな状態から開始する必要がある場合に便利です。逆に、クッキーは再起動を耐えられず、サイトに対しては各セッションが新しい訪問者のように見えます。--user-data-dirは、逆に永続的なプロファイルです。認証を伴うシナリオには、隔離ではなくこれを使用し、必ずIPを固定してください(下のstickyセクションを参照)。--storage-stateは、保存されたクッキーとlocalStorageを隔離されたセッションに挿入することを可能にします — これは前の2つの妥協案です。--allowed-originsと--blocked-originsは、エージェントがアクセスできる場所を制限します。過小評価されがちな節約:分析や広告ドメインに夢中になったエージェントは、トラフィックの消費を簡単に3倍にすることができます。--device(例えば、"iPhone 15")および--user-agentは、エージェントがどのブラウザとして表示されるかを変更します。プロキシのタイプに応じて一貫性を持たせて設定してください:データセンターのIP上にモバイルUser-Agentを置くのは矛盾であり、アンチボットシステムはそれを瞬時に読み取ります。
特に--cdp-endpointについて:これはMCPを既に起動されたブラウザに接続します。この場合、プロキシはMCPのフラグではなく、そのブラウザの起動時に設定されます — これは「プロキシが設定されているのにIPが変わらない」一般的な理由です。
browser-use: ProxySettingsを介したプロキシ
エージェントがbrowser-useで構築されている場合、設定は設定オブジェクトに渡され、ここでログインとパスワードを渡すことができます — これはAPIを介して行われ、コマンドラインを介してではありません:
from browser_use import Browser, ProxySettings
proxy = ProxySettings(server='http://gate.example.com:8080', username='user', password='pass', bypass='localhost,127.0.0.1')
browser = Browser(proxy=proxy)
serverフィールドは必須で、他はオプションです。同じ原則が純粋なPlaywrightにも適用されます:プロキシはブラウザの起動時にグローバルに設定されるか、各コンテキストごとにbrowser.newContext({ proxy: { server: ... } })を介して個別に設定されます。後者は並行エージェントの鍵です:各コンテキストは独自の出力アドレスを取得し、10のタスクが1つのIPを共有することはありません。
クラウドブラウザ:セッションレベルでのプロキシ
Browserbaseや同様のサービスでは、ブラウザは他のクラウド内に存在するため、起動フラグは利用できません — プロキシはセッションパラメータに指定され、通常はhttp://ログイン:パスワード@ゲート:ポートの形式でMCPサーバーの環境変数に設定されます。ここでのChromiumの制限は問題になりません:クラウドプロバイダーが文字列を解析し、ブラウザを内部から設定します。
実用的なニュアンス:クラウドブラウザには独自のプロキシプールがあり、すべてのクライアントで共有されています。アドレスの評判に敏感なタスク — アカウントへのログイン、すでに目立っているプラットフォームでの作業 — では、独自のチャネルの方が予測可能です。
ローテーションまたは固定:タスクのタイプに応じて選択
初心者のエラーは、各リクエストでローテーションを有効にし、なぜエージェントがログアウトするのか不思議に思うことです。エージェントシナリオには2つのモードがあり、相互に置き換え可能ではありません:
- 各リクエストでのローテーション(ProxyCoveではポート824) — 探索のため:100の商品カードを回避し、検索結果を収集し、異なる地域での価格を確認します。各リクエストは新しいアドレスから送信され、相互に関連付けるのは難しいです。
- 固定セッション(ポート10000以上、変更間隔1〜120分) — ステップから成るすべてのタスクのため:ログイン、カート、多ページフォーム、インターフェースとの長い対話。IPがチェーンの途中で変更されると、サイトは最良の場合再認証を要求し、最悪の場合セッションを疑わしいものとしてマークします。
エージェントはほぼ常に2番目のモードで動作します:定義上、ステップのシーケンスを実行し、一発で終わるものではありません。間隔の選択と一般的なエラーの詳細は、stickyセッションが必要な時期とその設定方法に関するガイドに詳述されています。
五つの落とし穴
- Chromiumでの認証付きSOCKS5。 Playwrightには
socks5://の構文がありますが、「SOCKS5とログインおよびパスワードの組み合わせ」はChromiumベースのブラウザでは歴史的に問題があります — Playwrightのトラッカーには2021年11月から関連するリクエストがオープンされています。選択肢がある場合、エージェントにはHTTP(S)チャネルを選択してください、こちらの方が予測可能です。 - DNSおよびWebRTCの漏洩。 トラフィックはプロキシを通過しますが、名前は直接解決されるか、WebRTCが実際のアドレスを返す — すべてのマスキングが意味を失います。これをエージェントを起動する前に確認する必要があります:プロキシを介して作業する際にWebRTCを隠す方法。
- 地理とロケールの非同期。 ドイツのIP、モスクワのマシンのタイムゾーン、英語のインターフェース — 自動化のように見えるセットです。Playwrightでは、ロケールとタイムゾーンはコンテキストのパラメータで設定され、プロキシの国に合わせて調整してください。
- あなたが注文していないトラフィック。 エージェントはページ全体を開き、画像、フォント、広告スクリプトを含みます。レジデントチャネルでギガバイト単位で支払う場合、これは顕著なコストになります — 不要なドメインをブロックし、可能な限りメディアの読み込みを無効にしてください。
- プロキシがブラウザが起動する場所に設定されていない。
--cdp-endpointを介して、Dockerラッパーを介して、またはクラウドサービスを介して作業する場合、MCPフラグは実際の接続に影響を与えません。設定後に最初に行うべきことは、エージェントに任意のIPチェックサービスを開かせ、アドレスと国が正しいことを確認することです。
エージェントに適したプロキシの種類
ルールは簡単です:タスクが実際のユーザーに近いほど、アドレスは「人間らしい」ものであるべきです。
- レジデントプロキシ — エージェントの基盤です。これは家庭のプロバイダーのアドレスであり、サイトにとってエージェントは通常の訪問者のように見えます。Cloudflare、地域価格、アンチボットのヒントがある場所ではどこでも必要です。
- モバイルプロキシ — ソーシャルメディアやアカウントに特に敏感なプラットフォームのための重火器です。1つのモバイルアドレスの背後には数千の実際の加入者がいるため、プラットフォームがそれを完全に禁止するのは高くつきます。
- データセンター — 内部API、テストスタンド、および保護されていないオープンソース用です。迅速かつ安価ですが、保護されたサイトではエージェントはすぐにチャレンジにぶつかります。
エージェントシナリオに役立つ詳細:ProxyCoveでは、接続文字列のプレフィックスを変更することでプロトコルを切り替えることができます — HTTP、HTTPS、SOCKS5は同じプロキシで利用可能で、プロキシを再設定する必要はありません。プール内の国は195以上あるため、「エージェントにローカルな検索結果を表示する」ことは、購入時に国を選択することで解決できます。
結論
AIエージェントにプロキシを接続することは、1行ではなく、3つの連続した解決策です:どのように認証するか(ヘッドレスエージェントの場合、ほぼ常にIPホワイトリストであり、パスワードではありません)、どこでプロキシを設定するか(MCPフラグ、設定オブジェクト、またはクラウドセッションのパラメータ — ただし、実際にブラウザが起動する場所で)、どのモードで作業するか(多段階シナリオの場合は固定アドレスで、各リクエストでのローテーションではありません)。さらに、実戦投入前にDNSおよびWebRTCの漏洩を必ず確認してください。
これを一度丁寧に行えば、エージェントはキャプチャとの対話にトークンを無駄に消費しなくなります。ProxyCoveのレジデントプロキシは、Playwright MCPおよびbrowser-useに数分で接続でき、トラフィックに基づいて支払われ、ヘッドレスモード用のIPホワイトリストが管理画面で有効になります。
