SolveHub

CAPTCHA の種類 · funcaptcha

Arkose Labs FunCaptcha 解決 API:FunCaptcha トークンを取得

SolveHub API で Arkose Labs FunCaptcha を解決:公開鍵、サイト URL、チャレンジコンテキスト(blob)、ブラウザー情報、プロキシ。フィールド、cURL 例、結果トークン、トラブルシューティング。

許可された QA 自動化とブラウザー連携向けです。テスト権限のあるサイトと業務フローでのみ使用してください。

このタスクを作成するには、下記の JSON を POST /v1/tasks に Authorization: Bearer <API_KEY>、Content-Type: application/json、Idempotency-Key 付きで送信します。事前にリアルタイム料金で利用可能か確認し、作成から照会までの流れはクイックスタートを参照してください。

可用性について:Arkose FunCaptcha は検知の仕組みとチャレンジの更新が非常に頻繁なため、解決成功率はいつでも低下する可能性があり、短期間まったく解決できなくなることもあります。この種別は可用性と成功率を保証しません。高い可用性が必要な業務には使用しないでください。失敗したタスクは課金されず、仮押さえ額は全額返金されます。連携側でリトライとフォールバックを用意してください。

Arkose Labs FunCaptcha の完全な解決:プロキシと、同一の実際のチャレンジから取得した challengeInfo(ページとチャレンジの設定)および browserInfo(再現するブラウザー)を指定します。プラットフォームはこれらをそのまま解決サービスに渡し、成功すると Arkose トークンを返します。すべての値は実際のページとブラウザーから取得してください。捏造した値は通常検知されるか、すぐに失敗します。

リクエストフィールド

外側の type と task は必須です。以下の task.* のパスはすべて task オブジェクト内にあります。フィールド名は大文字と小文字を区別します。長さの制限は UTF-8 のバイト数で計算します。

フィールド 型 必須 制限 説明
type 文字列 はい funcaptcha 固定 プラットフォームのタスク種別。
task JSON オブジェクト はい ≤ 7 MiB この種別のタスクパラメーター。
task.proxy ポート付きのプロキシ URL はい ≤ 2048 バイト 解く際に使用するプロキシ。protocol://user:pass@host:port または protocol://ip:port の形式で、protocol は http、https、socks5、ポートは 1–65535。
task.challengeInfo オブジェクト はい 下表を参照 キャプチャとフィンガープリントの設定。
task.browserInfo オブジェクト はい 下表を参照 再現するブラウザーの設定。

challengeInfo フィールド

全 41 フィールドで、そのうち 12 個が必須です。任意フィールドを省略すると既定の動作になります。指定する場合は表の型である必要があり、そうでない場合は作成リクエストが 400 INVALID_TASK を返します。表にないフィールドは拒否されます。

フィールド 型 必須 説明
challengeInfo.publicKey 空でない文字列 はい サイトの Arkose 公開鍵(ページ内の data-pkey / public_key の値)。
challengeInfo.site 空でない文字列 はい キャプチャが表示されるサイト。
challengeInfo.surl 空でない文字列 はい サイトの Arkose サービス URL(例:https://xxx.arkoselabs.com)。
challengeInfo.apiUrl 空でない文字列 いいえ キャプチャの api.js の完全な URL。
challengeInfo.capiMode 空でない文字列 はい キャプチャのモード(lightbox、inline など)。
challengeInfo.styleTheme 空でない文字列 はい キャプチャのスタイルテーマ(通常は default)。
challengeInfo.locationHref 空でない文字列 はい キャプチャを表示するページ(iframe)の location.href。
challengeInfo.documentReferrer 空でない文字列 はい そのページの document.referrer。
challengeInfo.documentTitle 空でない文字列 いいえ そのページの document.title。
challengeInfo.iframeUrl 空でない文字列 いいえ キャプチャ iframe の URL。
challengeInfo.ancestorOrigins 文字列の配列 はい location.ancestorOrigins のリスト。空配列も可。
challengeInfo.treeIndex 整数の配列 はい ページのフレームツリー内での位置(例:[0])。空配列も可。
challengeInfo.treeStructure 空でない文字列 はい フレームツリー構造の文字列(例:"[[]]")。
challengeInfo.languageEnabled 真偽値 はい カスタム言語が有効かどうか。
challengeInfo.jsfEnabled 真偽値 はい JavaScript フォントが有効かどうか。
challengeInfo.appMode 真偽値 いいえ ブラウザーではなくアプリ内で実行される場合は true。
challengeInfo.uniqueFingerprint 真偽値 いいえ 既定のアルゴリズムではなく毎回新しいフィンガープリントを使用する。
challengeInfo.oldFingerprint 真偽値 いいえ ランダム性を高めるため古いフィンガープリントを使用する。
challengeInfo.overrideFingerprint 真偽値 いいえ フィンガープリントの Sec-Ch-Ua と User-Agent を送信した値で上書きする。
challengeInfo.syntheticFingerprint 真偽値 いいえ フィンガープリントに合成データを混ぜる。
challengeInfo.randomProtoChain 真偽値 いいえ ランダムなプロトタイプチェーンハッシュを使用する。
challengeInfo.randomVideoExtended 真偽値 いいえ 拡張ビデオコーデック情報をランダムにする。
challengeInfo.staticSpeechData 真偽値 いいえ 既定の音声データを使用する。
challengeInfo.customTimezoneOffset 整数 いいえ タイムゾーンオフセット(分)。JavaScript の getTimezoneOffset() と同じ。
challengeInfo.historyLength 整数 いいえ 含める閲覧履歴の長さ(history.length)。
challengeInfo.noIframe 真偽値 いいえ キャプチャが別の iframe で読み込まれない場合は true。
challengeInfo.lowBandwidthMode 真偽値 いいえ 低帯域モード:最新の capi 情報を使い不要なリクエストを減らす。検知されたり誤った capi 情報を使う可能性がある。
challengeInfo.storageAccess 真偽値 いいえ Sec-Fetch-Storage-Access ヘッダーを使用するかどうか。
challengeInfo.solvePOW 真偽値 いいえ プルーフ・オブ・ワーク(PoW)が出た場合に解く。
challengeInfo.cookieTimestamp 真偽値 いいえ タイムスタンプ Cookie を含めるかどうか。
challengeInfo.disableArid 真偽値 いいえ ARID Cookie と X-Ark-Arid ヘッダーを無効にする。
challengeInfo.disableAridCookie 真偽値 いいえ ARID Cookie のみを無効にする。
challengeInfo.disableCookies 真偽値 いいえ すべての Cookie を無効にする。
challengeInfo.disableCookiesAnalytics 真偽値 いいえ 分析用 Cookie を無効にする。
challengeInfo.disableGT2Cookies 真偽値 いいえ gt2/public_key エンドポイントの Cookie を無効にする。
challengeInfo.disableNavigatorCookies 真偽値 いいえ navigator Cookie(navigator.cookieEnabled)を無効にする。
challengeInfo.powPause 真偽値 いいえ CPU が PoW を解く際の自然な待ち時間を再現する。
challengeInfo.exploitMode 真偽値 いいえ プロキシを使わず高速な方法で解く。
challengeInfo.skipHighWaves 真偽値 いいえ 6 ウェーブ以上のチャレンジは解かずにエラーで終了する。
challengeInfo.submitAnswerPause 真偽値 いいえ 回答送信時に自然な待ち時間を入れる。
challengeInfo.extraData オブジェクト いいえ FunCaptcha に data[<キー>] として送る追加データ(例:Roblox の {"blob": "..."})。

browserInfo フィールド

全 16 フィールドで、そのうち 5 個(User-Agent、Linux、Mac、Mobile、Safari)が必須です。User-Agent、Sec-Ch-Ua、Accept-Language などは同じ実際のブラウザーから取得し、プラットフォームのフラグと一致させてください。

フィールド 型 必須 説明
browserInfo.Accept-Language 空でない文字列 いいえ Accept-Language ヘッダー(例:en-US,en;q=0.9)。
browserInfo.Cache 真偽値 いいえ ブラウザーキャッシュを使用するかどうか。
browserInfo.Cookie 空でない文字列 いいえ 解く際に使用する Cookie。
browserInfo.DNT 真偽値 いいえ Do Not Track ヘッダーを付けるかどうか(Brave などに適する)。
browserInfo.HTTP3 真偽値 いいえ HTTP/3 を使用するかどうか。プロキシが HTTP/3 に対応している必要がある。
browserInfo.Linux 真偽値 はい Linux 端末として振る舞うかどうか。
browserInfo.Mac 真偽値 はい Mac 端末として振る舞うかどうか。
browserInfo.Mobile 真偽値 はい モバイル端末として振る舞うかどうか。
browserInfo.Safari 真偽値 はい Safari ブラウザーとして振る舞うかどうか。
browserInfo.Sec-Ch-Ua 空でない文字列 いいえ Sec-Ch-Ua ヘッダー。
browserInfo.Sec-Ch-Ua-Platform 空でない文字列 いいえ Sec-Ch-Ua-Platform ヘッダー(例:"Windows")。
browserInfo.User-Agent 空でない文字列 はい User-Agent ヘッダー。Linux/Mac/Mobile/Safari の設定と一致させる。
browserInfo.dataBrands 空でない文字列 いいえ フィンガープリントで使用する data brands。
browserInfo.languages 空でない文字列 いいえ 使用する言語。通常は Accept-Language と一致させる。
browserInfo.randomTLS 真偽値 いいえ ランダムな TLS フィンガープリントを使う。HTTP/3 は使えなくなる。
browserInfo.userbrowser 空でない文字列 いいえ userbrowser の値。User-Agent と少し異なる場合がある。

作成リクエストの例

以下の例には必須フィールドとよく使うヘッダーのみが含まれています。値はすべてプレースホルダーなので、ページの実際の値に置き換えてください。

{
  "type": "funcaptcha",
  "task": {
    "proxy": "http://user:pass@203.0.113.10:8080",
    "challengeInfo": {
      "publicKey": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "site": "https://example.com",
      "surl": "https://example.arkoselabs.com",
      "capiMode": "lightbox",
      "styleTheme": "default",
      "locationHref": "https://example.com",
      "documentReferrer": "https://example.com",
      "ancestorOrigins": [
        "https://example.com"
      ],
      "treeIndex": [
        0
      ],
      "treeStructure": "[[]]",
      "languageEnabled": true,
      "jsfEnabled": true
    },
    "browserInfo": {
      "Accept-Language": "en-US,en;q=0.9",
      "Linux": false,
      "Mac": false,
      "Mobile": false,
      "Safari": false,
      "Sec-Ch-Ua": "\"Chromium\";v=\"152\", \"Not?A_Brand\";v=\"24\", \"Google Chrome\";v=\"152\"",
      "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36"
    }
  }
}

cURL での呼び出し

例の Key、サイト情報、プロキシを実際の値に置き換えてください。同じ業務リクエストでは Idempotency-Key を変えないでください。

curl -sS -X POST 'https://www.tiam.codes/v1/tasks' \
  -H 'Authorization: Bearer sh_REPLACE_ME' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: example-funcaptcha-0001' \
  --data-binary @- <<'JSON'
{
  "type": "funcaptcha",
  "task": {
    "proxy": "http://user:pass@203.0.113.10:8080",
    "challengeInfo": {
      "publicKey": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "site": "https://example.com",
      "surl": "https://example.arkoselabs.com",
      "capiMode": "lightbox",
      "styleTheme": "default",
      "locationHref": "https://example.com",
      "documentReferrer": "https://example.com",
      "ancestorOrigins": [
        "https://example.com"
      ],
      "treeIndex": [
        0
      ],
      "treeStructure": "[[]]",
      "languageEnabled": true,
      "jsfEnabled": true
    },
    "browserInfo": {
      "Accept-Language": "en-US,en;q=0.9",
      "Linux": false,
      "Mac": false,
      "Mobile": false,
      "Safari": false,
      "Sec-Ch-Ua": "\"Chromium\";v=\"152\", \"Not?A_Brand\";v=\"24\", \"Google Chrome\";v=\"152\"",
      "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36"
    }
  }
}
JSON

作成レスポンスと照会

作成に成功すると HTTP 202 が返り、status は通常最初は queued です。taskId を保存し、約 2~3 秒ごとに GET /v1/tasks/{taskId} を呼び出してください。この種別のソフトタイムリミットは 180 秒です。解決中のステータスは dispatching または processing、終了後は completed または failed です。タイムリミットを過ぎても結果が得られないタスクは uncertain になります。元のタスクの照会を続け、新しい冪等キーで作り直さないでください。

結果フィールド

status=completed のとき、solution は次のオブジェクトです:

フィールド 型 読み取り方
solution.solution 文字列 対象サイトに送信する Arkose トークン(通常は fc-token / verification-token などに設定)。`
solution.gameInfo.gameType 整数 今回のチャレンジのゲーム種別。
solution.gameInfo.variant 文字列 チャレンジのバリアント。silent_pass は回答なしで通過したことを示します。
solution.gameInfo.waves 整数 回答したウェーブ数。0 はサイレント通過。
solution.gameInfo.solveTime 数値 解決にかかった時間(秒)。

成功レスポンスの例:

{
  "taskId": "5a1c6c55-7f3b-4c5d-9a7e-2f0d8e1b9c21",
  "type": "funcaptcha",
  "status": "completed",
  "priceMicros": 2000,
  "traceId": "0f3b2d7e-91a4-4c62-8a51-7d2e9c4b1f08",
  "solution": {
    "gameInfo": {
      "gameType": 4,
      "solveTime": 0.32,
      "variant": "silent_pass",
      "waves": 0
    },
    "solution": "XXXXXXXXXXXXXXXXX.XXXXXXXXXX|r=eu-west-1|meta=3|metabgclr=transparent|metaiconclr=%23757575|maintxtclr=%23b8b8b8|guitextcolor=%23474747|pk=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX|at=40|sup=1|rid=1|ag=101|cdn_url=https%3A%2F%2Fexample.arkoselabs.com%2Fcdn%2Ffc|surl=https%3A%2F%2Fexample.arkoselabs.com|smurl=https%3A%2F%2Fexample.arkoselabs.com%2Fcdn%2Ffc%2Fassets%2Fstyle-manager"
  },
  "createdAt": "2026-10-13T08:00:00Z",
  "finishedAt": "2026-10-13T08:00:06Z"
}

失敗レスポンスの例:

{
  "taskId": "5a1c6c55-7f3b-4c5d-9a7e-2f0d8e1b9c21",
  "type": "funcaptcha",
  "status": "failed",
  "priceMicros": 2000,
  "traceId": "0f3b2d7e-91a4-4c62-8a51-7d2e9c4b1f08",
  "errorCode": "TASK_FAILED",
  "failureReason": "Too many waves to solve, make skipHighWaves false in challengeInfo to solve anyway",
  "createdAt": "2026-10-13T08:00:00Z",
  "finishedAt": "2026-10-13T08:00:04Z"
}

失敗とトラブルシューティング

失敗したタスク(status=failed)は課金されず、仮押さえ額は全額返金されます。failureReason には解決サービスが返した具体的な理由が入ります。よくある理由と対処:

failureReason(例) 原因 対処
Too many waves to solve, make skipHighWaves false in challengeInfo to solve anyway チャレンジが 6 ウェーブ以上で、challengeInfo.skipHighWaves が true。 skipHighWaves を false にする(または省略する)して新しいタスクを作成する。
Failed to get proxy / IP information プロキシに接続できない、または出口 IP を取得できない。 プロキシのアドレス、ポート、認証情報、利用可否を確認する。
Incorrect proxy format. Please use protocol://user:pass@host:port or protocol://ip:port プロキシの形式が解決サービスに受け付けられない。 protocol://user:pass@host:port の形式で指定する。
HTTP/3 proxies must be used on Roblox right now 解決サービスは現在 Roblox に HTTP/3 プロキシを必須としており、使用中のプロキシが条件を満たさない。 HTTP/3 対応のプロキシに変更して再試行する。
Unsupported surl この surl はまだサポートされていない。 surl が実際のページから取得したものか確認し、それでも未対応の場合はプラットフォームのサポートに連絡する。

再送信する際は新しい Idempotency-Key を使用してください(同じキーでは元の失敗タスクが返ります)。フィールドの型や必須項目が正しくない場合、作成リクエストは直ちに 400 INVALID_TASK を返し、タスクは作成されず課金もされません。

作成リクエストでよくあるエラーは 400 INVALID_TASK、402 INSUFFICIENT_BALANCE、429 TASK_LIMIT_EXCEEDED、503 TYPE_UNAVAILABLE です。作成済みタスクが失敗した場合の公開エラーコードは TASK_FAILED または TASK_TIMEOUT で、uncertain には TASK_UNCERTAIN が対応します。詳細は プラットフォーム API リファレンス を参照してください。

関連ドキュメント

cURL で始めるアカウント作成

最終更新: