
Sora Fujimoto
AI Solutions Architect

AI駆動のウェブオートメーションがCAPTCHAの壁にぶつかると、すべてのパイプラインが停止します。ページが読み込まれず、フォームが送信できず、データ抽出が止まる—これはボットをブロックするように設計されたチャレンジです。TinyFish AgentQLは、AIをウェブに接続するための強力なツールキットで、自然言語クエリ、Playwright統合、企業規模での構造化されたデータ抽出を特徴とします。しかし、他のブラウザオートメーションフレームワークと同じように、CAPTCHAで詰まってしまいます。
CapSolverはこれを完全に変えるものです。AgentQLのPlaywright駆動のブラウザコンテキストにCapSolver Chrome拡張機能を読み込むことで、CAPTCHAはバックグラウンドで自動的かつ見えない形で解決されます。手動での解決は不要です。あなたの側で複雑なAPIの調整も必要ありません。あなたのオートメーションスクリプトは、CAPTCHAが存在しなかったかのように動作し続けます。
最高の点は、あなたのAgentQLクエリやスクリプトに1行のCAPTCHA関連のコードも必要ないということです。拡張機能が独自に検出、解決、トークンのインジェクションを処理し、エージェントが最も得意とするデータ抽出とワークフローの自動化に集中できます。
TinyFish AgentQL は、AIエージェントやLLMをリアルタイムのウェブ環境に接続するための企業向けツールキットです。TinyFishによって開発され、ページ要素を検索し、自然言語を使用して構造化されたデータを抽出するAI駆動のクエリ言語を提供します—破損しやすいCSSセレクターやXPathは必要ありません。
AgentQLはあらゆるページで動作します—認証済みコンテンツや動的に生成されたページも含め、大規模なウェブオートメーション、データ収集、AIエージェントワークフローに最適です。
CapSolver は、さまざまなCAPTCHAチャレンジを自動的に解決するAI駆動のCAPTCHA解決サービスです。高速な応答時間と広範な互換性により、自動化されたワークフローにシームレスに統合されます。
ほとんどのCAPTCHA解決の統合では、ボイラープレートコードを書く必要があります: タスクを作成し、結果をポーリングし、隠しフィールドにトークンをインジェクトします。これは、ロウなPlaywrightやPuppeteerスクリプトでの標準的なアプローチです。
AgentQL + CapSolverは根本的に異なるアプローチを取ります:
| 伝統的な(コードベース) | AgentQL + CapSolver拡張機能 |
|---|---|
| CapSolverサービスクラスを書く | Playwrightコンテキストに拡張機能をロードする |
createTask() / getTaskResult()を呼び出す |
拡張機能がすべてを自動的に行う |
page.evaluate()でトークンをインジェクトする |
トークンのインジェクションは見えない |
| エラー、リトライ、タイムアウトをコードで処理する | 拡張機能が内部でリトライを管理する |
| 各CAPTCHAタイプごとに異なるコード | すべてのタイプで自動的に動作する |
重要な洞察: CapSolver拡張機能はAgentQLのPlaywrightブラウザコンテキスト内で実行されます。AgentQLがCAPTCHAのあるページに移動すると、拡張機能がそれを検出し、バックグラウンドで解決し、トークンをインジェクトします—あなたのスクリプトがフォームとやり取りする前にすべてが完了します。あなたのオートメーションコードはクリーンで、CAPTCHAフリーのままです。
統合をセットアップする前に、以下のものを確認してください:
重要: Chrome拡張機能はChromiumで動作し、永続的なコンテキストが必要です。これはPlaywrightの要件であり、AgentQLの制限ではありません。
Python SDK:
pip install agentql
playwright install chromium
JavaScript SDK:
npm install agentql
npx playwright install chromium
CapSolver Chrome拡張機能をダウンロードし、専用のディレクトリに抽出します:
CapSolver.Browser.Extension-chrome-v1.17.0.zipをダウンロードしますmkdir -p ~/capsolver-extension
unzip CapSolver.Browser.Extension-chrome-v*.zip -d ~/capsolver-extension/
ls ~/capsolver-extension/manifest.json
manifest.jsonが表示されるはずです—これで拡張機能が正しい場所にあることが確認できます。
~/capsolver-extension/assets/config.jsの拡張機能設定ファイルを開き、apiKeyの値を自分のものに置き換えます:
export const defaultConfig = {
apiKey: 'CAP-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // ← ここにあなたのキーを入力
useCapsolver: true,
// ... その他の設定
};
あなたのAPIキーはCapSolverダッシュボードから取得できます。
重要なステップは、永続的なコンテキストでCapSolver拡張機能をロードするPlaywrightのChromiumを起動することです。
Python例:
import agentql
from playwright.sync_api import sync_playwright
import time
import os
# CapSolver拡張機能のパス
CAPSOLVER_EXTENSION_PATH = os.path.expanduser("~/capsolver-extension")
def main():
with sync_playwright() as p:
# 永続的なコンテキストとCapSolver拡張機能でChromiumを起動
context = p.chromium.launch_persistent_context(
user_data_dir="./browser-data",
headless=False, # 拡張機能はヘッドレスモードを必要とする
args=[
f"--disable-extensions-except={CAPSOLVER_EXTENSION_PATH}",
f"--load-extension={CAPSOLVER_EXTENSION_PATH}",
],
)
# AgentQLでページをラップしてAI駆動のクエリを実行
page = agentql.wrap(context.pages[0])
# あなたのターゲットページに移動
page.goto("https://example.com/protected-page")
# CapSolverがCAPTCHAを検出および解決するのを待つ
time.sleep(30)
# AgentQLの自然言語クエリを使用して送信ボタンを見つけてクリック
response = page.query_elements("""
{
submit_button
}
""")
# 送信ボタンをクリック—CAPTCHAはすでに解決済み!
response.submit_button.click()
# 送信後のデータを抽出
result = page.query_data("""
{
confirmation_message
}
""")
print(f"結果: {result['confirmation_message']}")
context.close()
if __name__ == "__main__":
main()
JavaScript例:
const { chromium } = require('playwright');
const agentql = require('agentql');
const path = require('path');
const os = require('os');
const CAPSOLVER_EXTENSION_PATH = path.join(os.homedir(), 'capsolver-extension');
(async () => {
// 永続的なコンテキストとCapSolver拡張機能でChromiumを起動
const context = await chromium.launchPersistentContext('./browser-data', {
headless: false, // 拡張機能はヘッドレスモードを必要とする
args: [
`--disable-extensions-except=${CAPSOLVER_EXTENSION_PATH}`,
`--load-extension=${CAPSOLVER_EXTENSION_PATH}`,
],
});
// 最初のページを取得し、AgentQLでラップ
const page = agentql.wrap(context.pages()[0]);
// ターゲットページに移動
await page.goto('https://example.com/protected-page');
// CapSolverがCAPTCHAを処理するのを待つ
await page.waitForTimeout(30000);
// AgentQLクエリを使用して操作—CAPTCHAはすでに解決済み
const response = await page.queryElements(`{
submit_button
}`);
await response.submit_button.click();
// 結果データを抽出
const result = await page.queryData(`{
confirmation_message
}`);
console.log('結果:', result.confirmation_message);
await context.close();
})();
ブラウザを起動した後、ブラウザウィンドウのchrome://extensionsに移動して、CapSolver拡張機能がアクティブであることを確認できます。CapSolver拡張機能がリストに表示され、有効になっていることを確認してください。
または、ブラウザコンソールでCapSolverのログメッセージをチェックして、サービスワーカーが実行されていることを確認できます。
セットアップが完了したら、AgentQLとCapSolverの使用は簡単です。
CAPTCHA固有のコードを書かないでください。 CAPTCHA保護されたフォームとやり取りする前に、待機時間を追加し、拡張機能に仕事を任せます。
page.goto("https://example.com/contact")
# AgentQLクエリを使用してフォームを入力
response = page.query_elements("""
{
contact_form {
name_field
email_field
message_field
submit_button
}
}
""")
response.contact_form.name_field.fill("John Doe")
response.contact_form.email_field.fill("john@example.com")
response.contact_form.message_field.fill("Hello, I have a question about your services.")
# CapSolverがCAPTCHAを解決するのを待つ
time.sleep(30)
# CAPTCHAトークンはすでにインジェクトされているので送信
response.contact_form.submit_button.click()
page.goto("https://example.com/login")
# CapSolverがTurnstileチャレンジを解決するのを待つ
time.sleep(25)
# AgentQLでログインフォーム要素を検索
response = page.query_elements("""
{
login_form {
email_input
password_input
login_button
}
}
""")
# フォームを入力—Turnstileはすでに処理済み
response.login_form.email_input.fill("me@example.com")
response.login_form.password_input.fill("mypassword123")
# ログインをクリック
response.login_form.login_button.click()
page.goto("https://example.com/data")
# あらゆるCAPTCHAチャレンジが解除されるのを待つ
time.sleep(30)
# AgentQLで構造化されたデータを抽出
data = page.query_data("""
{
products[] {
name
price
rating
availability
}
}
""")
for product in data['products']:
print(f"{product['name']}: ${product['price']} ({product['rating']} stars)")
| CAPTCHAタイプ | 通常の解決時間 | 推奨待機時間 |
|---|---|---|
| reCAPTCHA v2(チェックボックス) | 5-15秒 | 30-60秒 |
| reCAPTCHA v2(非表示) | 5-15秒 | 30秒 |
| reCAPTCHA v3 | 3-10秒 | 20-30秒 |
| Cloudflare Turnstile | 3-10秒 | 20-30秒 |
ヒント: 不確実な場合は30秒を使用してください。少し長く待つのは、早すぎる送信よりも良いです。追加の時間は結果に影響しません。
AgentQLがCapSolver拡張機能をロードして実行するときの仕組みは次の通りです:
あなたのAgentQLスクリプト
───────────────────────────────────────────────────
page.goto("https://...") ──► Chromiumがページを読み込む
│
▼
┌─────────────────────────────┐
│ CAPTCHAウィジェットのあるページ │
│ │
│ CapSolver拡張機能: │
│ 1. コンテンツスクリプトが │
│ CAPTCHAを検出します │
│ 2. サービスワーカーは │
│ CapSolver APIを呼び出します │
│ 3. トークンが受け取られます │
│ 4. トークンが隠しフォームフィールドにインジェクトされます │
└─────────────────────────────┘
│
▼
time.sleep(30) 拡張機能がCAPTCHAを解決...
│
▼
page.query_elements(...) AgentQLがフォーム要素を見つける
submit_button.click() フォームが有効なトークンで送信される
│
▼
"検証に成功しました!"
Playwrightが--load-extensionフラグでChromiumを起動するとき:
AgentQL + CapSolver統合のすべての構成オプションを含む完全なPython設定例:
import agentql
from playwright.sync_api import sync_playwright
import os
# 設定
CAPSOLVER_EXTENSION_PATH = os.path.expanduser("~/capsolver-extension")
USER_DATA_DIR = "./browser-data"
with sync_playwright() as p:
context = p.chromium.launch_persistent_context(
user_data_dir=USER_DATA_DIR,
headless=False,
args=[
f"--disable-extensions-except={CAPSOLVER_EXTENSION_PATH}",
f"--load-extension={CAPSOLVER_EXTENSION_PATH}",
],
)
page = agentql.wrap(context.pages[0])
# ... あなたのオートメーションコードここに
context.close()
| オプション | 説明 |
|---|---|
user_data_dir |
ブラウザプロファイルデータ(クッキー、セッション)を保存するディレクトリ。永続的なコンテキストに必須です。 |
headless |
「False」でなければなりません — Chrome拡張機能はヘッドレスモードで動作しません。 |
--disable-extensions-except |
読み込み可能な拡張機能を制限します(競合を防ぎます)。 |
--load-extension |
アンパッケージドなCapSolver拡張機能ディレクトリへのパス。 |
CAPSOLVER_EXTENSION_PATH |
manifest.jsonを含む抽出されたCapSolver拡張機能の完全なパス。 |
CapSolver APIキーは、拡張機能のassets/config.jsファイルに直接設定されます(上記のステップ3を参照)。
症状: CAPTCHAが自動的に解決されません。
原因: 通常のブラウザコンテキストを使用している可能性があり、またはヘッドレスモードで実行している可能性があります。
解決策: Playwrightの拡張機能はパーソナライズされたコンテキストとヘッド付きモードを必須とします:
# ✅ 正しい — パーソナライズされたコンテキスト、ヘッド付き
context = p.chromium.launch_persistent_context(
user_data_dir="./browser-data",
headless=False,
args=[...拡張機能引数...]
)
# ❌ 間違っている — 通常のコンテキスト(拡張機能は読み込まれません)
browser = p.chromium.launch()
context = browser.new_context()
可能性のある原因:
症状: スクリプトは実行されるが、拡張機能が表示されません。
原因: Chrome拡張機能はヘッドレスモードで動作しません。
解決策: サーバーで仮想ディスプレイを使用してヘッド付きモードで実行してください:
# Xvfbのインストール
sudo apt-get install xvfb
# 仮想ディスプレイの起動
Xvfb :99 -screen 0 1280x720x24 &
# DISPLAYの設定
export DISPLAY=:99
症状: 拡張機能のフラグが無視されます。
原因: Google Chrome 137+では、ブランド構築で--load-extensionがサポートされなくなりました。
解決策: Playwrightのバンドル済みChromium(推奨)またはChrome for Testingを使用してください:
# PlaywrightのChromiumをインストール(推奨)
npx playwright install chromium
# またはChrome for Testingをダウンロード
# 訪問: https://googlechromelabs.github.io/chrome-for-testing/
常に十分な待機時間を設定してください。 さらに長い待機時間は常に安全です。CAPTCHAは通常5〜20秒で解決されますが、ネットワーク遅延、複雑なチャレンジ、またはリトライにより時間が追加されることがあります。30〜60秒が最適です。
自動化スクリプトをシンプルに保つ。 AgentQLクエリにCAPTCHA固有のロジックを追加しないでください。拡張機能がすべてを処理します — あなたのコードはデータ抽出と操作に焦点を当ててください。
CapSolver残高を監視してください。 1つのCAPTCHA解決にはクレジットが使われます。capsolver.com/dashboardで定期的に残高を確認して、中断を防いでください。
パーソナライズされたコンテキストを一貫して使用してください。 拡張機能が必要な場合は、常にlaunch_persistent_context()で起動してください。これにより、クッキーとセッションデータが実行間で保持され、CAPTCHAの頻度が減少します。
ヘッドレスサーバーでXvfbを使用してください。 Chrome拡張機能はディスプレイコンテキストを必要とします。物理的なディスプレイが利用できないサーバー環境では、Xvfbをセットアップしてください。
TinyFish AgentQL + CapSolverの統合により、最も強力なウェブオートメーションツールキットに非表示のCAPTCHA解決をもたらします。複雑なCAPTCHA処理コードを書く代わりに、単に:
CapSolver Chrome拡張機能が残りの処理をすべて行います — CAPTCHAの検出、CapSolver APIを通じた解決、およびページへのトークンの挿入。あなたのAgentQLスクリプトはCAPTCHAについて一切知らなくても構いません。
これは、AI駆動のウェブオートメーションとAI駆動のCAPTCHA解決を組み合わせた場合のCAPTCHA解決の姿です:非表示、自動、コードフリー。
さっそく始めたいですか? CapSolverに登録し、初回チャージで6%のボーナスを追加するコードAGENTQLを使用してください!

いいえ。CapSolver拡張機能はPlaywrightブラウザコンテキスト内でバックグラウンドで動作します。フォームを送信する前にtime.sleep()またはwaitForTimeout()を追加するだけで、拡張機能が自動的に検出、解決、トークンの挿入を処理します。
Playwrightではlaunch_persistent_context()を使用する場合にのみChrome拡張機能がサポートされます。これはPlaywrightのアーキテクチャの要件です。browser.new_context()で作成された通常のブラウザコンテキストでは拡張機能を読み込むことはできません。
いいえ。Chrome拡張機能はヘッド付きブラウザを必要とします。ディスプレイが利用できないサーバー環境では、Xvfb(X Virtual Framebuffer)を使用して仮想ディスプレイを設定してください。
CapSolverはreCAPTCHA v2(チェックボックスおよび非表示)、reCAPTCHA v3、Cloudflare Turnstile、AWS WAF CAPTCHAなどに対応しています。拡張機能は自動的にCAPTCHAの種類を検出し、それに応じて解決します。
CapSolverはCAPTCHAの種類と量に基づいて競争力のある料金を提供しています。最新の料金はcapsolver.comをご覧ください。
AgentQLは無料と有料のトライアルがあります。SDKとクエリ言語は開発とテストに利用可能です。料金詳細はtinyfish.aiをご覧ください。
ほとんどのCAPTCHAでは30〜60秒が十分です。実際の解決時間は通常5〜20秒ですが、余分なバッファを追加することで信頼性が確保されます。疑問がある場合は30秒を使用してください。
LLMを駆動するAIオートメーションインフラがCAPTCHA認識をどのように変革するかを発見してください。ビジネスプロセスの効率を向上させ、手動の介入を削減します。高度な検証ソリューションで自動化されたオペレーションを最適化してください。

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