
Sora Fujimoto
AI Solutions Architect

AIブラウザエージェントは、開発者がウェブとインタラクトする方法を再定義しています。データのスクレイピングからワークフローの自動化まで、これらのエージェントはページをナビゲートし、フォームを入力し、人間の介入なしで情報を抽出します。しかし、CAPTCHAが表示されると、エージェントは停止します。
HyperBrowserは、AIエージェントに特化したクラウドベースのブラウザインフラストラクチャを提供し、TurnstileおよびreCAPTCHAのネイティブCAPTCHA解決を備えています。しかし、ウェブには2種類のCAPTCHAにとどまらず、AWS WAF、GeeTest、企業向けreCAPTCHAのバリアント、その他のアンチボットチャレンジは、ネイティブツールでは解決されていません。
**CapSolver**はそのギャップを埋めます。HyperBrowserの拡張機能APIを介してCapSolver Chrome拡張機能を直接アップロードすることで、セッションごと、CAPTCHAタイプごと、スケールごとに包括的なCAPTCHAカバレッジを取得できます。自動化コードを変更することなく。
HyperBrowserは、AIエージェントに特化したクラウドブラウザインフラストラクチャプラットフォームです。ネイティブなChrome DevTools Protocol (CDP)アクセス、プロキシサポート、アンチデテクション機能を標準で提供するマネージドブラウザセッションを提供します。
HyperBrowserはブラウザ自動化の運用負荷を軽減します。Chromiumバイナリの管理、ヘッドレス構成、プロキシローテーション、アンチファイントラッキングを管理する代わりに、WebSocket URLを返すクリーンなAPIを提供します。PlaywrightまたはPuppeteerスクリプトに接続し、自動化を開始できます。
CapSolverは、さまざまなCAPTCHAチャレンジを回避するAI駆動のソリューションを提供するリーディングCAPTCHA解決サービスです。複数のCAPTCHAタイプをサポートし、高速な応答時間を備え、自動ワークフローにシームレスに統合されます。
統合をセットアップする前に、以下の項目を確認してください:
@hyperbrowser/sdkおよびplaywright-coreがインストールされていることnpm install @hyperbrowser/sdk playwright-core
CAP-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)CapSolver Chrome拡張機能をダウンロードし、APIキーで設定:
CapSolver.Browser.Extension-chrome-vX.X.X.zip をダウンロードmkdir -p capsolver-extension
unzip CapSolver.Browser.Extension-chrome-v*.zip -d capsolver-extension/
capsolver-extension/assets/config.jsを開き、APIキーを設定:export const defaultConfig = {
apiKey: 'CAP-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // ここにあなたのキーを入力
useCapsolver: true,
// ... その他の設定
};
ls capsolver-extension/manifest.json
# 存在する必要があります
HyperBrowserの拡張機能アップロードAPIはZIPファイルを必要とします。設定済みの拡張機能をパッケージ化:
cd capsolver-extension && zip -r ../capsolver-extension.zip . && cd ..
これにより、プロジェクトルートにcapsolver-extension.zipが作成され、アップロード準備が整います。
HyperBrowser SDKを使用して拡張機能ZIPをアップロードします。これは一度だけ行う必要があります--返されるextensionIdはすべてのセッションで再利用可能です。
import { Hyperbrowser } from "@hyperbrowser/sdk";
const client = new Hyperbrowser({
apiKey: process.env.HYPERBROWSER_API_KEY,
});
// 拡張機能をアップロード (一度限りの操作)
const ext = await client.extensions.create({
filePath: "capsolver-extension.zip",
});
console.log("拡張機能ID:", ext.id);
// このIDを保存してください -- すべてのセッションで再利用します
ヒント:
ext.idを環境変数または構成ファイルに保存してください。拡張機能のバージョンまたはAPIキーを変更する場合のみ、再アップロードが必要です。
CapSolver拡張機能をロードするHyperBrowserセッションを作成:
const session = await client.sessions.create({
extensionIds: [ext.id],
useProxy: true, // プレミアムプランが必要 — フリーレベルでは省略
solveCaptchas: false, // CapSolverを使用するためネイティブ解決を無効
});
console.log("セッションID:", session.id);
console.log("WebSocket URL:", session.wsEndpoint);
注意: CapSolverを使用する場合、solveCaptchas: falseを設定してください。ネイティブ解決とCapSolverの両方を使用したい場合、下記の「ネイティブとCapSolverの使用タイミング」セクションを参照してください。
WebSocketエンドポイントを介してPlaywrightをHyperBrowserセッションに接続:
import { chromium } from "playwright-core";
const browser = await chromium.connectOverCDP(session.wsEndpoint);
const context = browser.contexts()[0];
const page = context.pages()[0] || await context.newPage();
// CAPTCHA保護ページに移動
await page.goto("https://www.google.com/recaptcha/api2/demo");
// CapSolver拡張機能がCAPTCHAを検出・解決するのを待つ
await page.waitForTimeout(30000);
// フォームを送信
await page.click("#recaptcha-demo-submit");
await page.waitForLoadState("networkidle");
// 成功を確認
const result = await page.textContent("body");
console.log("結果:", result);
// 期待される: "Verification Success"を含む
await browser.close();
await client.sessions.stop(session.id);
拡張機能をアップロードし、セッションを作成し、CAPTCHAを解決し、結果を確認する完全なエンドツーエンドスクリプトを以下に示します:
import { Hyperbrowser } from "@hyperbrowser/sdk";
import { chromium } from "playwright-core";
const HYPERBROWSER_API_KEY = process.env.HYPERBROWSER_API_KEY!;
const CAPSOLVER_EXTENSION_ID = process.env.CAPSOLVER_EXTENSION_ID; // オプション: 既存のIDを再利用
async function main() {
const client = new Hyperbrowser({ apiKey: HYPERBROWSER_API_KEY });
// ステップ1: 拡張機能をアップロード (または既存のIDを再利用)
let extensionId = CAPSOLVER_EXTENSION_ID;
if (!extensionId) {
const ext = await client.extensions.create({
filePath: "capsolver-extension.zip",
});
extensionId = ext.id;
console.log("アップロード済み拡張機能:", extensionId);
}
// ステップ2: CapSolver拡張機能付きのセッションを作成
const session = await client.sessions.create({
extensionIds: [extensionId],
useProxy: true, // プレミアムプランが必要 — フリーレベルでは省略
solveCaptchas: false,
});
console.log("セッション開始:", session.id);
// ステップ3: Playwrightに接続
const browser = await chromium.connectOverCDP(session.wsEndpoint);
const context = browser.contexts()[0];
const page = context.pages()[0] || await context.newPage();
try {
// ステップ4: reCAPTCHAデモに移動
console.log("reCAPTCHAデモに移動中...");
await page.goto("https://www.google.com/recaptcha/api2/demo");
// ステップ5: CapSolverがCAPTCHAを解決するのを待つ
console.log("CapSolverがCAPTCHAを解決するのを待っています...");
await page.waitForTimeout(30000);
// ステップ6: フォームを送信
console.log("フォームを送信中...");
await page.click("#recaptcha-demo-submit");
await page.waitForLoadState("networkidle");
// ステップ7: 結果を確認
const bodyText = await page.textContent("body");
if (bodyText?.includes("Verification Success")) {
console.log("CAPTCHAが正常に解決されました!");
} else {
console.log("検証結果:", bodyText?.slice(0, 200));
}
} finally {
await browser.close();
await client.sessions.stop(session.id);
console.log("セッションを停止しました。");
}
}
main().catch(console.error);
実行:
HYPERBROWSER_API_KEY=your_key npx tsx captcha-test.ts
拡張機能のアップロードからCAPTCHA解決に至るまでのフローを以下に示します:
一時的なセットアップ
═══════════════════════════════════════════════════════
capsolver-extension/ HyperBrowserクラウド
├── manifest.json ──ZIP──► POST /extensions
├── assets/config.js │
└── background.js ▼
extensionId: "ext_abc123"
(保存され、再利用可能)
セッションごとのフロー
═══════════════════════════════════════════════════════
あなたのスクリプト HyperBrowserクラウド
─────────────────────────────────────────────────────
sessions.create({ ──► クラウドChromiumを起動
extensionIds: [id], │
useProxy: true ├── 拡張機能をロード
}) ├── プロキシ + ステルスを適用
▼
◄── wsEndpoint (WebSocket URL)
playwright.connectOverCDP() クラウドブラウザに接続
│
▼
page.goto(target_url) ──► Chromiumがページを読み込み
┌─────────────────────────────┐
│ CAPTCHAウィジェットのあるページ │
│ │
│ CapSolver拡張機能: │
│ 1. コンテンツスクリプトがページ上のCAPTCHAタイプを検出 │
│ 2. サービスワーカーがCapSolver APIを呼び出す │
│ 3. ソリューショントークンを受信 │
│ 4. トークンを非表示フォームフィールドにインジェクト │
└─────────────────────────────┘
│
page.waitForTimeout(30s) │ (解決がここです)
│ │
▼ ▼
page.click("Submit") ──► 有効なトークンを含むフォームを送信
│
◄── ▼
Googleデモ: "Verification Success!"
CapSolver Chrome拡張機能のアプローチには、APIベースの解決よりも重要な利点があります。拡張機能はブラウザコンテキスト内で実行されるため、以下のような利点があります:
createTask() / getTaskResult() / ロジックのインジェクトは必要ありません -- すべて拡張機能が処理// 包括的: CapSolver拡張機能
const session = await client.sessions.create({
extensionIds: [capsolverExtId],
solveCaptchas: false,
useProxy: true, // プレミアムプランが必要 — フリーレベルでは省略
});
最大限の信頼性を確保するには、両方を有効にできます。ネイティブ解決はTurnstile/reCAPTCHAを無料で処理し、CapSolverはそれ以外を処理します:
// ベルトとサスペンダー: 両方を有効
const session = await client.sessions.create({
extensionIds: [capsolverExtId],
solveCaptchas: true, // ネイティブがTurnstile/reCAPTCHAを処理
useProxy: true, // プレミアムプランが必要 — フリーレベルでは省略
// CapSolver拡張機能がAWS WAF、GeeTestなども処理
});
注意: 同じCAPTCHAタイプ(例: reCAPTCHA)で両方を有効にした場合、どちらが先に解決するかに依存します。実際には問題ありません -- どちらも衝突しません。

ブラウザ拡張機能を使用したくない場合、または解決フローの細かい制御が必要な場合、CapSolver REST APIを直接使用できます。これは任意のHyperBrowserセッションで動作し、拡張機能のアップロードは必要ありません。
createTaskを呼び出すgetTaskResultをポーリングしてトークンを取得import { Hyperbrowser } from "@hyperbrowser/sdk";
import { chromium } from "playwright-core";
const HYPERBROWSER_API_KEY = process.env.HYPERBROWSER_API_KEY!;
const CAPSOLVER_API_KEY = process.env.CAPSOLVER_API_KEY!;
async function solveCaptchaViaAPI(
pageUrl: string,
siteKey: string
): Promise<string> {
// タスクの作成
const createRes = await fetch("https://api.capsolver.com/createTask", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
clientKey: CAPSOLVER_API_KEY,
task: {
type: "ReCaptchaV2TaskProxyLess",
websiteURL: pageUrl,
websiteKey: siteKey,
},
}),
});
const { taskId, errorDescription } = await createRes.json();
if (!taskId) throw new Error(`createTaskに失敗しました: ${errorDescription}`);
// 結果をポーリング
for (let i = 0; i < 40; i++) {
await new Promise((r) => setTimeout(r, 3000));
const resultRes = await fetch("https://api.capsolver.com/getTaskResult", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ clientKey: CAPSOLVER_API_KEY, taskId }),
});
const result = await resultRes.json();
if (result.status === "ready") {
return result.solution.gRecaptchaResponse;
}
}
throw new Error("解決タイムアウト");
}
async function main() {
const client = new Hyperbrowser({ apiKey: HYPERBROWSER_API_KEY });
// 拡張機能は不要です — 通常のセッションを使用してください
const session = await client.sessions.create({
solveCaptchas: false,
});
const browser = await chromium.connectOverCDP(session.wsEndpoint);
const context = browser.contexts()[0];
const page = context.pages()[0] || await context.newPage();
try {
await page.goto("https://www.google.com/recaptcha/api2/demo");
// DOMからsitekeyを検出
const siteKey = await page.evaluate(() => {
const el = document.querySelector(".g-recaptcha[data-sitekey]");
return el?.getAttribute("data-sitekey") ?? "";
});
console.log("sitekey:", siteKey);
// CapSolver APIで解決
const token = await solveCaptchaViaAPI(page.url(), siteKey);
console.log("トークンを取得しました、長さ:", token.length);
// トークンを注入
await page.evaluate((t) => {
const textarea = document.querySelector(
'textarea[name="g-recaptcha-response"]'
);
if (textarea) (textarea as HTMLTextAreaElement).value = t;
}, token);
// 送信
await page.click("#recaptcha-demo-submit");
await page.waitForLoadState("networkidle");
const body = await page.textContent("body");
console.log(
body?.includes("Verification Success")
? "API経由でCAPTCHAを解決しました!"
: body?.slice(0, 200)
);
} finally {
await browser.close();
await client.sessions.stop(session.id);
}
}
main().catch(console.error);
| 拡張機能 | API | |
|---|---|---|
| 設定 | ZIPを一度アップロードし、IDを再利用 | 設定不要 — APIキーのみ |
| 検出 | 自動(コンテンツスクリプト) | 手動(DOMをクエリしてsitekeyを取得) |
| トークンの注入 | 自動 | 手動(JSを評価) |
| 制御 | 透過的 — 拡張機能がすべてを処理 | すべてのステップを完全に制御可能 |
| 最適な用途 | 一度設定して忘れられる自動化 | カスタム解決ロジック、リトライ戦略 |
症状: CAPTCHAが解決されない、拡張機能が存在しないように動作する。
原因の可能性:
client.extensions.create()から返されたIDが正しく渡されているか確認してくださいmanifest.jsonがZIPのルートに存在することを確認してください、サブフォルダ内には含めないでください)assets/config.jsに有効なCapSolver APIキーが含まれているか確認してください修正:
# ZIP構造を確認 — manifest.jsonがルートに存在する必要があります
unzip -l capsolver-extension.zip | head -20
# 期待される出力: manifest.json (NOT capsolver-extension/manifest.json)
症状: ページが読み込まれますが、待ってもCAPTCHAが解決されません。
原因の可能性:
waitForTimeoutを45〜60秒に増やす症状: chromium.connectOverCDP()が接続エラーをスローします。
修正: セッションがまだ有効であることを確認してください。セッションにはタイムアウトがあります(プランによってデフォルトが異なります)。前のセッションが期限切れの場合は、新しいセッションを作成してください:
try {
const browser = await chromium.connectOverCDP(session.wsEndpoint);
} catch (err) {
console.log("セッションが期限切れです。新しいセッションを作成します...");
const newSession = await client.sessions.create({
extensionIds: [extensionId],
useProxy: true, // プレミアムプランが必要 — フリーレベルでは省略してください
});
const browser = await chromium.connectOverCDP(newSession.wsEndpoint);
}
症状: CapSolver拡張機能はローカルのChromeで動作しますが、HyperBrowserセッションでは動作しません。
原因の可能性:
config.jsがZIPに含まれていない — モディファイドされたassets/config.jsがZIPに含まれているか確認してくださいapi.capsolver.comにアクセスできる必要があります。HyperBrowserセッションのネットワークがHTTPSの出力アクセスを許可しているか確認してください拡張機能のアップロードは一度だけです。返されたextensionIdをすべてのセッションで再利用してください:
// 一度だけアップロード
const ext = await client.extensions.create({ filePath: "capsolver-extension.zip" });
const CAPSOLVER_EXT_ID = ext.id;
// すべてのセッションで再利用
for (const url of targetUrls) {
const session = await client.sessions.create({
extensionIds: [CAPSOLVER_EXT_ID],
useProxy: true, // プレミアムプランが必要 — フリーレベルでは省略してください
});
// ... 自動化
await client.sessions.stop(session.id);
}
CAPTCHAはデータセンターIPからアクセスするとより多く表示され、解決が難しくなります。HyperBrowserの組み込みプロキシが役立ちます:
const session = await client.sessions.create({
extensionIds: [extensionId],
useProxy: true, // プレミアムプランが必要 — フリーレベルでは省略してください。住宅用プロキシでCAPTCHAの頻度を減らすことができます
});
異なるCAPTCHAタイプには解決に異なる時間がかかります:
| CAPTCHAタイプ | 一般的な解決時間 | 推奨待機時間 |
|---|---|---|
| reCAPTCHA v2(チェックボックス) | 5〜15秒 | 30秒 |
| reCAPTCHA v2(非表示) | 5〜15秒 | 25秒 |
| reCAPTCHA v3 | 3〜10秒 | 20秒 |
| Cloudflare Turnstile | 3〜10秒 | 20秒 |
| AWS WAF | 5〜15秒 | 30秒 |
| GeeTest v3/v4 | 5〜20秒 | 30秒 |
ヒント: 疑問がある場合は30秒を使用してください。早すぎるよりも少し長く待つほうが良いです。
CAPTCHAの解決にはクレジットが使われます。自動化に残高チェックを追加して、中断を防ぎましょう:
import axios from "axios";
async function checkBalance(apiKey: string): Promise<number> {
const response = await axios.post("https://api.capsolver.com/getBalance", {
clientKey: apiKey,
});
return response.data.balance || 0;
}
const balance = await checkBalance(process.env.CAPSOLVER_API_KEY!);
if (balance < 1) {
console.warn("CapSolverの残高が少ないです!capsolver.comでチャージしてください");
}
不要なセッションは常に停止して、不要な料金を防ぎましょう:
try {
// ... あなたの自動化コード
} finally {
await browser.close();
await client.sessions.stop(session.id);
}
CapSolver APIキーをローテーションした場合、config.jsを更新し、再ZIPし、再アップロードする必要があります:
# config.jsにキーを更新し、次のように実行してください:
cd capsolver-extension && zip -r ../capsolver-extension.zip . && cd ..
その後、新しいZIPをアップロードし、保存されたextensionIdを更新してください。
HyperBrowserとCapSolverは、AIブラウザ自動化におけるCAPTCHA解決のための最も包括的な設定を提供します:
統合は簡単です: CapSolver拡張機能をZIPし、HyperBrowser SDK経由で一度だけアップロードし、セッションに接続します。コードレベルでのCAPTCHA検出、トークンの注入、APIポーリングは一切必要ありません。拡張機能がブラウザコンテキスト内ですべてを処理します。
ウェブスクレイパー、AIエージェント、自動テストパイプラインの構築に関わらず、この組み合わせによりCAPTCHAはブロックではなくなります — タイプに関係なく。
始めましょうか? CapSolverに登録し、初回チャージでHYPERBROWSERコードを使用して6%のボーナスを取得してください!
HyperBrowserはAIエージェント向けのクラウドブラウザインフラストラクチャプラットフォームです。ネイティブCDPアクセスを備えた管理された、隔離されたブラウザセッションを提供し、Playwright、Puppeteer、またはSeleniumでクラウドホストのChromiumインスタンスに接続できます。組み込みプロキシ、アンチ検出、TurnstileおよびreCAPTCHAのネイティブ解決を含みます。
HyperBrowserは拡張機能APIを第一級サポートしています。Chrome拡張機能ディレクトリをZIPし、client.extensions.create()経由でアップロードし、extensionIdを取得します。このIDをclient.sessions.create()に渡すことで、拡張機能は自動的にクラウドブラウザセッションにロードされます。
CapSolverはreCAPTCHA v2(チェックボックスおよび非表示)、reCAPTCHA v3、reCAPTCHAエンタープライズ、Cloudflare Turnstile、Cloudflare 5秒チャレンジ、AWS WAF、GeeTest v3/v4など、多くのCAPTCHAタイプをサポートしています。Chrome拡張機能は自動的にCAPTCHAタイプを検出および解決します。
CapSolverはCAPTCHAタイプとボリュームに基づいた競争力のある価格を提供します。現在の料金はcapsolver.comを参照してください。初回チャージでHYPERBROWSERコードを使用して6%のボーナスを取得できます。
いいえ。一度アップロードすれば、すべてのセッションで返されたextensionIdを再利用できます。拡張機能内のCapSolver APIキーを変更した場合や拡張機能のバージョンを更新した場合のみ、再アップロードが必要です。
はい。HyperBrowserはPlaywright、Puppeteer、Seleniumをサポートしています。PlaywrightのconnectOverCDP呼び出しをPuppeteerの同等物に置き換えてください:
import puppeteer from "puppeteer-core";
const browser = await puppeteer.connect({
browserWSEndpoint: session.wsEndpoint,
});
使用する自動化フレームワークにかかわらず、CapSolver拡張機能は同じように動作します。
HyperBrowserは無料トライアルを提供していますが、セッション数には制限があります。有料プランではより多くのセッション、より長いタイムアウト、および追加機能が利用できます。現在の料金はhyperbrowser.aiを参照してください。
LLMを駆動するAIオートメーションインフラがCAPTCHA認識をどのように変革するかを発見してください。ビジネスプロセスの効率を向上させ、手動の介入を削減します。高度な検証ソリューションで自動化されたオペレーションを最適化してください。

大規模言語モデルのトレーニングのためのデータ収集をスケールする方法を学びましょう。大規模にCAPTCHAを解くことで、AIモデル用の高品質なデータセットを構築するための自動化された戦略を発見しましょう。
