CAPSOLVER
ブログ
AIエージェント向けCAPTCHA課題の解決方法: n8n、CapSolver、OpenClawを用いたデータ抽出

AIエージェント向けCAPTCHAチャレンジの解決方法: n8n、CapSolver、OpenClawを用いたデータ抽出

Logo of CapSolver

Sora Fujimoto

AI Solutions Architect

09-Feb-2026

n8n、CapSolver、OpenClawを使ったデータ抽出

AIアシスタントに自動化されたサーバーサイドのデータ抽出をトリガーする機能を付与します — ブラウザのインジェクションやコードは必要ありません。

課題: CAPTCHAがAIエージェントの効率を妨げる

AIエージェントがウェブをナビゲートする際、CAPTCHAが主な障害物となります。保護されたページはエージェントをブロックし、フォームの送信ができない、タスクが人間の介入を待って停止します。これにより、自動データスクリーニングや情報処理におけるAIエージェントの効率と自律性が大きく制限されます。

この根本的な問題に対処するため、OpenClawCapSolverの2つの強力なソリューションを提供します。

アプローチ1 — ブラウザ拡張機能の統合

OpenClawのブラウザ環境にCapSolverのChrome拡張機能をロードします。この拡張機能はクライアントサイドでCAPTCHAを検出・解決し、n8nの関与なしにスムーズに検証を回避します。これにより、AIエージェントはページをナビゲートしながら検証を無視できます。(拡張機能アプローチの詳細なガイドはこちらを参照)

アプローチ2 — サーバーサイドのn8nオートメーションパイプライン(本ガイドの焦点)

OpenClawが単一のwebhookリクエストをトリガーし、n8nがCapSolver APIを通じてCAPTCHAを解決し、フォームを送信し、AIエージェントにクリーンなページコンテンツを返します。このプロセスでは、AIエージェントが直接CAPTCHA検証を扱いません。

作成する内容:

OpenClawがwebhook経由でトリガーするサーバーサイドのCAPTCHAオートメーションパイプライン。n8nはCapSolverを活用してCAPTCHAを解決し、フォームを送信し、処理済みのページコンテンツをAIエージェントに返します。これにより、データ抽出タスクのスムーズな実行が保証されます。


前提条件

開始する前に、以下の環境とツールを確保してください:

  1. OpenClawがインストールされており、ゲートウェイが動作していること (openclaw gateway start)
  2. n8nがローカルで動作している — インストールガイド
  3. CapSolverアカウントとAPIキー — サインアップはこちら
  4. n8nにCapSolverノードが利用可能 — (公式統合 — 既に組み込まれています)

n8nでのCapSolverの設定

CapSolverはn8nの公式統合として利用可能で、追加のコミュニティノードのインストールは必要ありません。ワークフローを構築する際、ノードパネルで直接見つけることができます。CapSolverノードをアカウントと認証するには、n8nで資格情報を設定する必要があります。

n8nのキャンバスを開き、**+**をクリックしてノードを追加し、CapSolverを検索してください。このノードは、タスクの作成、ポーリング、トークンの取得を1つのユニットで処理します。

資格情報を追加する手順:

  1. n8nで 資格情報 → 新規資格情報 を選択
  2. CapSolverを検索
  3. CapSolverダッシュボードから取得したAPIキーを貼り付け
  4. 保存

重要: ワークフロー内のすべてのCapSolverノードはこの資格情報を参照します。1度だけ作成すればよく、すべてのCAPTCHA解決ワークフローが同じ資格情報を共有します。さらに、CapSolverは公式に豊富なGitHubスキルリポジトリを提供しており、CapSolverに関連する他の統合や使用例を探索できます。これにより、AIエージェントの能力をさらに拡張できます。


ワークフロー: OpenClaw CAPTCHAオートメーションパイプライン

以下のすべては例です。URL、フィールド名、CAPTCHAタイプ、成功条件、応答構造 — すべてはここでのデモサイトに特化しています。実際のターゲットは異なります。各ノードの設定は完成形ではなく、スタート地点として扱ってください。

仕組み

  1. Webhook — OpenClaw(または任意のHTTPクライアント)からのPOSTリクエストを受け取ります。
  2. CapSolver — 設定されたタスクタイプを使用してCAPTCHAを解決します。
  3. HTTPリクエスト — 解決されたトークンをターゲットサイトに送信します。
  4. If — 応答が成功または失敗を示しているかを確認します。
  5. フィールド編集 — 応答からpageTextを抽出します。
  6. Webhookへの応答 — 結果を呼び出し元に返します。
Copy
Webhook ──► CAPTCHAを解決 ──► トークンを送信 ──► 成功? ──► 結果を抽出 ──► Webhookに応答
                                                         └─► 失敗をマーク ───┘

ノード設定の詳細

「OpenClaw/Capsolver/n8n Scraper」という新しいワークフローを作成し、以下のノードを使用します:

1. Webhookノード

  • タイプ: Webhook
  • HTTPメソッド: POST
  • パス: openclaw/scrape
  • 応答: 応答ノード (コールを同期的に行う — 呼び出し元は結果を待機します)

2. CapSolverノード

  • タイプ: CapSolver
  • タスクタイプ: ReCaptchaV2TaskProxyless
  • ウェブサイトURL: https://example.com/protected-page
  • ウェブサイトキー: YOUR_SITE_KEY (ページソース内でdata-sitekeyを検索)
  • 資格情報: CapSolverのAPIキー

reCAPTCHA v3を使用している場合、タスクタイプをReCaptchaV3TaskProxylessに切り替え、Page Actionフィールドを追加(例: loginsubmithomepage)。これはv3で必須です — サイトがGoogleと登録するアクション名です。grecaptcha.execute(...)の呼び出し近くで見つかります。

各CAPTCHAタイプには固有のパラメータセットがあります — v2ではオプションだったフィールドがv3では必須になる場合があります。また、v3ではv2に存在しないフィールド(例: minScore)が表示される場合もあります。必ずCapSolverドキュメントでタスクタイプに必要な正確なパラメータを確認してください。

このノードはCapSolver APIを呼び出し、解決を待機(通常5〜20秒)し、$json.data.solution.gRecaptchaResponseでトークンを返します。

3. HTTPリクエストノード

  • メソッド: POST
  • URL: https://example.com/protected-page
  • ボディ: form-urlencoded
    • g-recaptcha-response = ={{ $json.data.solution.gRecaptchaResponse }}
  • ヘッダー: 通常のブラウザヘッダー(User-Agent、Accept、Referer、Originなど)

これはブラウザと同じようにフォームを送信します。

ヒント: トークンの送信方法はサイトによって異なります。多くのフォームではg-recaptcha-responseとしてリクエストボディに送信しますが、一部のサイトではJSONフィールド、カスタムヘッダー、またはクッキー、異なる名前で送信する場合があります。実際の送信内容を確認するには、ブラウザのDevTools(Networkタブ)を使用し、HTTPリクエストノードでそれに合わせて設定してください。

4. Ifノード(成功確認)

  • 条件: $json.data"recaptcha-success"が含まれている
  • Trueブランチ → フィールド編集(成功)
  • Falseブランチ → フィールド編集1(失敗)

5. フィールド編集 / フィールド編集1ノード

両方のブランチで1つのフィールドを設定します:

  • pageText = {{ $json.data }}

成功と失敗のブランチは両方ともpageTextを渡します — 呼び出し元はHTMLを検査して結果を判断できます。

ご自身のページに合わせてカスタマイズしてください: 応答データをパースおよび使用する方法は、ご自身の目的とターゲットサイトが返す内容に完全に依存します。一部のページはJSONを返し、他のページはHTMLを返し、成功時にリダイレクトする場合もあります。特定のフィールドの抽出、テーブルのパース、セッションクッキーの確認、HTMLの完全削除など、ご自身のニーズに合わせてカスタマイズしてください。成功条件("recaptcha-success")も例であり、ご自身のサイトには独自の指標があります。これらのノードはスタート地点として扱い、ご自身のユースケースに合わせてカスタマイズする必要があります。

6. 結果の保存ノード

このノードは、{ pageText, savedAt }をwebhook応答に渡し、オプションで結果をストレージに永続化します。

注意: n8nのCodeノードはNode.jsビルトインモジュール(例: require('fs'))をブロックするサンドボックス環境のVMで実行されます。ディスクに書き込むにはExecute Commandノードを使用してください。または、ご自身のスタックに合った任意のn8n統合でこのノードを置き換えることもできます。

オプションA — ローカルJSONファイル(Execute Commandノード):

2つのノードを連続して使用します:

ノード7a — データ準備(Codeノード):

javascript Copy
const item = $input.first().json;
const now = new Date();
const savedAt = now.toISOString();
const data = { pageText: item.pageText || '', savedAt };
const encoded = Buffer.from(JSON.stringify(data)).toString('base64');
const cmd = 'python3 /path/to/save-result.py ' + encoded;
return [{ json: { cmd, pageText: data.pageText, savedAt } }];

ノード7b — 結果保存(Execute Commandノード):

  • コマンド: ={{ $json.cmd }}

ここでsave-result.pyはbase64引数を読み込み、ローカルJSONファイルに追加します。

オプションB — n8nがサポートする任意のストレージ:

n8nはほぼすべてのストレージシステムに対応するネイティブノードを提供しています。ノード7をこれらのいずれかに置き換えてください:

ストレージ n8nノード
Googleスプレッドシート pageText + タイムスタンプで行を追加
Airtable レコードを作成
Notion データベースエントリを作成
PostgreSQL / MySQL テーブルにINSERT
AWS S3 / Cloudflare R2 JSONファイルをアップロード
Slack / Telegram チャンネルに結果を投稿

Edit FieldsとRespond to Webhookの間にノードを接続し、$json.pageTextとタイムスタンプを保存するように設定してください。

7. Webhookへの応答ノード

  • 応答形式: JSON
  • 応答本文: ={{ JSON.stringify($json) }}
  • 失敗時も継続: 有効

ワークフローを構築したら、有効にしてください。webhookのパスは以下になります:

Copy
POST http://127.0.0.1:3005/webhook/openclaw/scrape

このワークフローをインポート

以下のJSONをコピーし、メニュー → JSONからインポートでn8nにインポートしてください。インポート後、"Solve CAPTCHA"ノードでCapSolverの資格情報を選択してください。

クリックしてワークフローのJSONを展開
json Copy
{
  "nodes": [
    {
      "parameters": {
        "content": "## OpenClaw CAPTCHAオートメーションパイプライン\n\n### 仕組み\n\n1. webhookトリガーでプロセスを開始します。\n2. 専門的なサービスを使用してCAPTCHAを解決しようとします。\n3. CAPTCHAトークンを検証のために送信します。\n4. トークン送信が成功したかを評価します。\n5. 結果を設定し、webhook経由で応答します。\n\n### 設定手順\n\n- [ ] 望ましいエンドポイントURLでwebhookトリガーを設定してください。\n- [ ] CAPTCHA解決サービスの資格情報を設定してください。\n- [ ] トークン送信に適したHTTPリクエストの設定を確認してください。\n- [ ] 成功および失敗の応答メッセージをカスタマイズしてください。\n\n### カスタマイズ\n\n'Success?'ノードで成功および失敗の条件と応答をカスタマイズできます。",
        "width": 480,
        "height": 656
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -1312,
        -352
      ],
      "id": "de683912-ba9c-4879-9a8e-38190c4b236c",
      "name": "スタickyノート"
    },
    {
      "parameters": {
        "content": "## 初期化とCAPTCHA解決\n\nwebhookトリガーから始まり、外部サービスを使用してCAPTCHAを解決します。",
        "width": 800,
        "height": 272,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -752,
        -208
      ],
      "id": "41705a72-53ba-4c61-951b-251f7f35f422",
      "name": "スタickyノート1"
    },
    {
      "parameters": {
        "content": "## トークン送信\n\n解決されたCAPTCHAトークンを検証のために送信し、結果を確認します。",
        "width": 496,
        "height": 304,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        160,
        -224
      ],
      "id": "260fdb86-71a7-46dc-9b41-1abd4ae08b79",
      "name": "スタickyノート2"
    },
    {
      "parameters": {
        "content": "## 結果処理と応答\n\n成功および失敗の結果を処理し、webhook経由で応答を送信します。",
        "width": 496,
        "height": 480,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        768,
        -352
      ],
      "id": "e17032fd-3901-4c2a-aeea-4088c9f79bd4",
      "name": "スタickyノート3"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "openclaw/scrape",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -704,
        -96
      ],
      "id": "oc-909",
      "name": "Webhookトリガー",
      "webhookId": "oc-909-webhook",
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "websiteURL": "={{ $json.body.websiteURL || 'https://example.com/protected-page' }}",
        "websiteKey": "={{ $json.body.websiteKey || 'YOUR_SITE_KEY_HERE' }}",
        "optional": {}
      },
      "type": "n8n-nodes-capsolver.capSolver",
      "typeVersion": 1,
      "position": [
        -96,
        -96
      ],
      "id": "oc-910",
      "name": "CAPTCHAを解決 [Webhook]"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $('Webhook Trigger').item.json.body.targetURL || 'https://example.com/protected-page' }}",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
            },
            {
              "name": "content-type",
              "value": "application/x-www-form-urlencoded"
            }
          ]
        },
        "sendBody": true,
        "contentType": "form-urlencoded",
        "bodyParameters": {
          "parameters": [
            {
              "name": "g-recaptcha-response",
              "value": "={{ $json.data.solution.gRecaptchaResponse }}"
            }
          ]
        },
        "options": {
          "response": {
            "response": {}
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        208,
        -96
      ],
      "id": "oc-911",
      "name": "トークンを送信 [Webhook]"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": false,
            "leftValue": "",
            "typeValidation": "loose",
            "version": 2
          },
          "conditions": [
            {
              "id": "if-2",
              "leftValue": "={{ String($json.data || $json || '').includes($('Webhook Trigger').item.json.body.successMarker || 'recaptcha-success') }}",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        512,
        -96
      ],
      "id": "oc-912",
      "name": "成功? [Webhook]"
    },
    {
"parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "ws1",
              "name": "success",
              "value": "true",
              "type": "boolean"
            },
            {
              "id": "ws2",
              "name": "pageText",
              "value": "={{ $json.data || $json }}",
              "type": "string"
            },
            {
              "id": "ws3",
              "name": "savedAt",
              "value": "={{ new Date().toISOString() }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        816,
        -224
      ],
      "id": "oc-913",
      "name": "Extract Result [Webhook]"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "wf1",
              "name": "success",
              "value": "false",
              "type": "boolean"
            },
            {
              "id": "wf2",
              "name": "pageText",
              "value": "={{ $json.data || $json }}",
              "type": "string"
            },
            {
              "id": "wf3",
              "name": "error",
              "value": "Response did not contain success marker",
              "type": "string"
            },
            {
              "id": "wf4",
              "name": "savedAt",
              "value": "={{ new Date().toISOString() }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        816,
        -48
      ],
      "id": "oc-914",
      "name": "Mark Failed [Webhook]"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {}
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.5,
      "position": [
        1120,
        -96
      ],
      "id": "oc-917",
      "name": "Respond to Webhook"
    }
  ],
  "connections": {
    "Webhook Trigger": {
      "main": [
        [
          {
            "node": "Solve CAPTCHA [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Solve CAPTCHA [Webhook]": {
      "main": [
        [
          {
            "node": "Submit Token [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Submit Token [Webhook]": {
      "main": [
        [
          {
            "node": "Success? [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Success? [Webhook]": {
      "main": [
        [
          {
            "node": "Extract Result [Webhook]",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Mark Failed [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Result [Webhook]": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mark Failed [Webhook]": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "instanceId": "962ff0267b713be0344b866fa54daae28de8ed2144e2e6867da355dae193ea1f"
  }
}

OpenClawの統合

OpenClawをこのワークフローに接続するには、トリガー スクリプトを作成し、登録します。

トリガー スクリプトの作成:

bash Copy
cat > ~/.openclaw/scripts/extract-data << \'EOF\'
#!/usr/bin/env bash
curl -s -X POST http://127.0.0.1:3005/webhook/openclaw/scrape
EOF
chmod +x ~/.openclaw/scripts/extract-data

これはOpenClawが実行する唯一のものです。引数も、サイトキーも、URLもありません。ワークフローが何をスクレイプするかを知っています。

OpenClawがデータを取得する方法: スクリプトはn8nが終了するのを待つ(CapSolverの解決 + フォームの送信)後、Webhookの応答で { pageText, savedAt } を直接受け取ります。ファイルの読み込みは関与しません。HTTP経由で同期的にデータが戻ってきます。応答の構造はこのワークフローが返すものと同じです。必要に応じて他のフィールド(例: 解析された価格、ログインステータス、構造化されたJSONオブジェクト)を取得するには、Edit FieldsとSave Resultノードを編集して、ご使用ケースに必要なものを返すようにしてください。

TOOLS.mdにコマンドを登録:

~/.openclaw/workspace/TOOLS.mdを開き、OpenClawがコマンドを認識するように以下のエントリを追加してください:

markdown Copy
### extract-data

実行: `/root/.openclaw/scripts/extract-data`
ライブパイプラインから最新の `{ pageText, savedAt }` を返します。JSON応答の `pageText` フィールドを返します。

AIエージェントの自動化フローをテスト

OpenClawからトリガーを発行します。AIエージェントにDiscord、Telegram、WhatsApp、または他のチャネル経由でこのコマンドを送信してください:

Copy
extract data

OpenClawは extract-data スクリプトを実行し、Webhookを発火して待機します。n8nはCAPTCHAを解決し、フォームを送信し、HTTP応答で { pageText, savedAt } を直接返します。OpenClawはその結果を受け取り、要約します。通常、10〜40秒程度で完了します。

ターミナルからテスト:

bash Copy
curl -s -X POST http://127.0.0.1:3005/webhook/openclaw/scrape

ワークフローをあなたのターゲットサイトに適応させる

このガイドのワークフローは特定のデモサイト用に構築されています。実際のターゲットサイトでは、パイプラインのすべての部分が調整が必要になる場合があります。以下を確認してください:

1. CAPTCHAの種類

すべてのサイトがreCAPTCHA v2を使用しているわけではありません。CapSolverノードのタスクタイプをターゲットに合わせて変更してください:

サイトで表示されるもの n8n ノードの操作
「私はロボットではありません」チェックボックス reCAPTCHA v2
インビジブルreCAPTCHA(自動起動) reCAPTCHA v2
reCAPTCHA v3スコア reCAPTCHA v3
Cloudflare Turnstileウィジェット Cloudflare Turnstile
Cloudflareチャレンジ(5秒のページ) Cloudflare Challenge
GeeTestパズル(v3) GeeTest V3
GeeTestパズル(v4) GeeTest V4
DataDomeボット保護 DataDome
AWS WAF CAPTCHA AWS WAF
MTCaptcha MTCaptcha

また、サイトURLとサイトキーをターゲットに合わせて更新してください。サイトキーはページソースで見つけることができます(data-sitekey属性を検索するか、CapSolverブラウザ拡張機能が自動検出します)。

2. トークンの送信方法

これはサイトごとに最も大きく異なる部分です。このデモサイトは単純なフォームPOSTでトークンをボディフィールドに含めています。あなたのターゲットは異なる可能性があります:

フォームフィールドとして(最も一般的)

Copy
POST /submit
Content-Type: application/x-www-form-urlencoded

g-recaptcha-response=TOKEN&other_field=value

JSONボディとして

Copy
POST /api/login
Content-Type: application/json

{ "username": "...", "password": "...", "captchaToken": "TOKEN" }

ヘッダーとして

Copy
POST /api/action
X-Captcha-Token: TOKEN

クッキーとして

Copy
POST /submit
Cookie: cf_clearance=TOKEN

URLのクエリパラメータとして

Copy
GET /search?q=query&token=TOKEN

手動でターゲットサイトのCAPTCHAを解決するときにブラウザの開発者ツールのネットワークタブを確認してください。解決後にすぐに発生するリクエストを見つけて、トークンがどこに送信されるかを確認してください。

3. HTTPリクエストノード

トークンの送信方法が分かったら、HTTPリクエストノードをそれに合わせて構成してください:

  • メソッド: サイトに合わせて(POST、GET、PUT)
  • URL: フォームまたはAPIコールを受信する正確なエンドポイント
  • ヘッダー: ブラウザのネットワークタブからヘッダーをコピーしてください — User-Agent、Referer、Origin、Accept、Content-Typeは通常必要とされます
  • ボディ: エンドポイントに応じてform-urlencoded、JSON、またはmultipartを使用
  • クッキー: サイトがセッションクッキーを使用している場合、ヘッダーとして渡すか、ログインステップでHTTPリクエストノードを使用して取得してください

4. 必要なデータの抽出

現在のワークフローでは、応答の完全なHTMLが pageText として渡されています。ご使用ケースに応じて、これを後処理する必要があります:

  • HTTPリクエスト後のコードノードを追加してHTMLを解析し、特定のフィールド(製品名、価格、ステータス)を抽出
  • n8nのHTML抽出ノードを使用して、コードを書かずに特定のCSSセレクターからデータを抽出
  • ブランドHTMLではなく構造化されたフィールドを保存 — これにより、実行ごとのクエリと比較が容易になります

5. マルチステップフロー

いくつかのターゲットでは1つのリクエストでは不十分です:

  1. CSRFトークンまたはセッションクッキーを取得するためにページをGET
  2. CAPTCHAを解決
  3. CSRFトークン + CAPTCHAトークン + 資格情報を含むフォームをPOST

n8nで複数のHTTPリクエストノードをチェーンして処理してください。ノード間で $json 式を使用して値を渡してください。


問題解決

"n8nスクレイパーに到達できませんでした"

json Copy
{"success": false, "error": "n8nスクレイパーに到達できませんでした。OpenClaw CAPTCHAスクレイパーのワークフローがアクティブになっていますか?"}

確認: n8nが実行中ですか?ワークフローが有効になっていますか?n8nを開き、ワークフローがActive(緑色のトグル)になっているか確認してください。

CapSolverタイムアウト / トークンが取得できなかった

可能性のある原因:

  • 無効なAPIキー — ~/.n8n/credentials を確認してください
  • サービス残高が不足 — capsolver.com/dashboard で残高を追加してください
  • n8nサーバーとCapSolver API間のネットワーク問題

pageText が空またはエラーページを含んでいる

  • HTTPリクエストのURLまたはフォームフィールド名がターゲットに合っていません
  • g-recaptcha-response フィールド名を確認してください — 一部のサイトでは別のフィールド名を使用しています
  • HTTPリクエストノードで fullResponse: true を有効にしてステータスコードを確認してください

完全な構成リファレンス

n8nワークフローのノード概要

ノード タイプ キー設定
Webhook n8n-nodes-base.webhook POST、パス: openclaw/scrape、responseMode: responseNode
サイトスクレイプ n8n-nodes-capsolver.capSolver タスク: ReCaptchaV2TaskProxyless
HTTPリクエスト n8n-nodes-base.httpRequest トークンをボディに含むターゲットURLへのPOST
If n8n-nodes-base.if $json.data"recaptcha-success" が含まれているか確認
フィールド編集 n8n-nodes-base.set pageText = $json.data
結果を保存 n8n-nodes-base.executeCommand または任意のストレージノード 結果を保存(ファイル、DB、スプレッドシートなど)
Webhookに応答 n8n-nodes-base.respondToWebhook JSON、continueOnFail: true

CAPTCHAタスクタイプ

CAPTCHA n8n ノードの操作
reCAPTCHA v2(チェックボックス) reCAPTCHA v2
reCAPTCHA v2(インビジブル) reCAPTCHA v2
reCAPTCHA v3 reCAPTCHA v3
Cloudflare Turnstile Cloudflare Turnstile
Cloudflare Challenge Cloudflare Challenge
GeeTest V3 GeeTest V3
GeeTest V4 GeeTest V4
DataDome DataDome
AWS WAF AWS WAF
MTCaptcha MTCaptcha

結論

OpenClaw + n8n + CapSolverのパイプラインは、以下のようなプロダクショングレードのデータ抽出設定を提供します:

  • AIエージェントがWebhook経由で要求するときにオンデマンドで実行されます。
  • ブラウザやディスプレイは必要ありません。
  • CAPTCHA処理は完全に非表示になります — あなたやAIエージェントには見えません。

AIエージェントは単に「"extract data"」コマンドを発行し、クリーンなページコンテンツを受け取ります。CapSolverが難しい部分を処理し、n8nがフローを調整し、OpenClawがインターフェースとして機能します。


さっそく始めたいですか?CapSolverに登録し、初回チャージでOPENCLAWというボーナスコードを使用してください!


よくある質問

OpenClawにCapSolverやCAPTCHAについて伝える必要がありますか?

いいえ。OpenClawは単にHTTPリクエストを発火するスクリプトを実行するだけです。n8nがすべての処理を担当します。AIエージェントはCAPTCHAについて知らされていません — ただジョブをトリガーし、結果を読み取るだけです。

別のサイトに接続できますか?

はい、ただしURLだけを変更するだけではおそらくなりません。すべてのサイトはCAPTCHAトークンを異なる方法で送信します — 一部はフォームフィールド、一部はJSONボディ、一部はヘッダーまたはクッキーを使用します。上記の「ターゲットサイトにワークフローを適応させる」セクションを参照してください。

ターゲットがTurnstileを使用している場合どうなりますか?

CapSolverノードのタスクタイプを AntiTurnstileTaskProxyless に変更してください。その後、ターゲットのネットワークリクエストを確認して、Turnstileトークンがどこに送信されるかを確認してください — 通常は cf-turnstile-response という名前の隠しフォームフィールドに含まれますが、一部の実装ではJSONボディ、ヘッダー、またはクッキーに含まれることもあります。

どのくらいの結果が保存されますか?

保存方法に依存します。ローカルのJSONファイルでは、必要なだけ保存できます。Googleスプレッドシートやデータベースを使用する場合、実行ごとに無限に行が追加されます。Save Resultノードを、保存の必要に応じて設定してください。

クロニジョブからこのワークフローをトリガーできますか?

はい — Webhookエンドポイントは単なるHTTP POSTです。HTTPリクエストができるものであれば、すべてトリガーできます:

bash Copy
curl -s -X POST http://127.0.0.1:3005/webhook/openclaw/scrape

1回の抽出にどのくらいのコストがかかりますか?

1回の実行で1つのCapSolverクレジットが使われます。reCAPTCHA v2は最も安価なタイプの1つです。現在の料金はcapsolver.comで確認してください。

OpenClawは無料ですか?

OpenClawはオープンソースで、自己ホスト可能です。AIモデルプロバイダーのAPIクレジットとCapSolverのCAPTCHA解決用クレジットが必要です。

コンプライアンス免責事項: このブログで提供される情報は、情報提供のみを目的としています。CapSolverは、すべての適用される法律および規制の遵守に努めています。CapSolverネットワークの不法、詐欺、または悪用の目的での使用は厳格に禁止され、調査されます。私たちのキャプチャ解決ソリューションは、公共データのクローリング中にキャプチャの問題を解決する際に100%のコンプライアンスを確保しながら、ユーザーエクスペリエンスを向上させます。私たちは、サービスの責任ある使用を奨励します。詳細については、サービス利用規約およびプライバシーポリシーをご覧ください。

もっと見る

企業自動化の向上:
企業自動化の向上:LLMを駆動とするインフラによるシームレスなCAPTCHA認識と運用効率

LLMを駆動するAIオートメーションインフラがCAPTCHA認識をどのように変革するかを発見してください。ビジネスプロセスの効率を向上させ、手動の介入を削減します。高度な検証ソリューションで自動化されたオペレーションを最適化してください。

AI
Logo of CapSolver

Sora Fujimoto

30-Mar-2026

LLMトレーニングのためのデータ収集のスケーリング:大規模なキャプチャの解決
LLMトレーニングのためのデータ収集のスケーリング: CAPTCHAをスケールで解く

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

AI
Logo of CapSolver

Anh Tuan

27-Mar-2026

オープンブラウザ キャップソルバーを使用する
CAPTCHAを解決する方法 OpenBrowserで CapSolverを使用して (AIエージェントオートメーションガイド)

OpenBrowserでCAPTCHAを解くためにCapSolverを使用してください。AIエージェント用にreCAPTCHA、Turnstileなど簡単に自動化します。

AI
Logo of CapSolver

Sora Fujimoto

26-Mar-2026

ハイパーブラウザ と キャップソルバー
HyperBrowserで任意のCAPTCHAを解く方法: CapSolverを使用したフルセットアップガイド

HyperBrowserで任意のCAPTCHAをCapSolverで解決。reCAPTCHA、Turnstile、AWS WAFなども簡単に自動化できます。

AI
Logo of CapSolver

Sora Fujimoto

26-Mar-2026

キャプチャを解く:価格モニタリングAIエージェント向けのステップバイステップガイド
キャプチャの解決: 価格モニタリング用のAIエージェントのためのステップバイステップガイド

CapSolverを使って、価格モニタリング用AIエージェントのCAPTCHAを効果的に解く方法を学びましょう。このステップバイステップガイドは、途切れることのないデータ収集と強化された市場の洞察を保証します。

AI
Logo of CapSolver

Sora Fujimoto

24-Mar-2026

CAPTCHAをNanoClawとCapSolverで解く
NanoClawとCapSolverを使ってCAPTCHAを自動的に解く方法

CapSolverとNanoClawを使用して、reCAPTCHA、Turnstile、AWS WAF、その他のCAPTCHAを自動で解決するためのステップバイステップガイド。Claude AIエージェント、ゼロコード、および複数のブラウザに対応。

AI
Logo of CapSolver

Emma Foster

20-Mar-2026