ガイド
タスク(トークン)
reCAPTCHA v2

ReCaptchaV2: reCAPTCHA v2の解決

TIP

タスクはcreateTaskメソッドで作成し、結果はgetTaskResultメソッドで取得します。

対応しているタスクタイプtypes

  • ReCaptchaV2TaskProxyLessは、サーバーの内蔵プロキシを使用します。
  • ReCaptchaV2EnterpriseTaskこのタスクタイプは、ご自身のプロキシが必要です。
  • ReCaptchaV2EnterpriseTaskProxyLessは、サーバーの内蔵プロキシを使用します。

タスクの作成

createTaskメソッドを使用してタスクを作成します。

タスクを作成する前に、PlaywrightやPuppeteerなどの自動化ツールでトークンを使用する必要がある場合、それらのコールバック関数を見つける必要があるかもしれません。参照:

タスクオブジェクトの構造

WARNING

パラメータの設定方法がわからない場合は、CapSolver拡張機能を使用して必要なパラメータを自動的に取得してください。


v2トークンが無効であると判明した場合は、CapSolver拡張機能を使用してJSON設定を取得し、当社のカスタマーサービスに送信して設定してください。設定後、トークンのスコアが大幅に向上します。

プロパティタイプ必須説明
typeString必須ReCaptchaV2TaskProxyLess
ReCaptchaV2EnterpriseTask
ReCaptchaV2EnterpriseTaskProxyLess
websiteURLString必須キャプチャを読み込むターゲットウェブページのURL。ホスト名だけでなく完全なURLを送信するのが最適です。
websiteKeyString必須Recaptchaのウェブサイトキー。
proxyStringオプションプロキシの使用について学びましょう。
pageActionStringオプションReCaptchaV2の場合、/anchorエンドポイントのペイロードにsaパラメータがある場合、その値を送信してください。
recaptchaDataSValueStringオプションReCaptchaV2の通常バージョンで、/anchorエンドポイントのペイロードにsパラメータがある場合、その値を送信してください。
enterprisePayloadObjectオプションReCaptchaV2のエンタープライズバージョンで、/anchorエンドポイントのペイロードにsパラメータがある場合、その値を送信してください。
isInvisibleBoolオプション「私はロボットではありません」チェックボックスがないがチャレンジが表示される場合、通常v2のインビジブルモードで必要とされます。
isSessionBoolオプションセッションモードを有効にすると、Cookieとして使用されるrecaptcha-ca-t値が返されます。通常v3に表示されます。

注: 一部のウェブサイトではrecaptcha-ca-e値が必要で、通常v2に表示されます。この値が存在する場合、追加のパラメータ設定なしで自動的に返されます。
apiDomainStringオプションキャプチャを読み込むためのドメイン名。通常、このパラメータを渡す必要はありません。
http://www.google.com/
http://www.recaptcha.net/

リクエスト例

POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "ReCaptchaV2Task",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    "enterprisePayload": {
      "s": "SOME_ADDITIONAL_TOKEN" // Optional
    },
    "isInvisible": false, // Optional
    "pageAction": "submit", // Optional
    "apiDomain": "", // Optional
    "proxy": "http:ip:port:user:pass", // socks5:ip:port:user:pass, Optional
  }
}

タスクを送信すると、成功した場合はレスポンスで「taskId」を受け取るはずです。task idを受け取らなかった場合は、errorCode: 全エラーリストを読んでください。

レスポンス例

{
    "errorId": 0,
    "errorCode": "",
    "errorDescription": "",
    "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

結果の取得

taskIdを取得したら、そのtaskIdを送信してソリューションを取得する必要があります。レスポンスの構造はgetTaskResultで説明されています。

システムの負荷に応じて、1秒から10秒の間に結果が得られます。

リクエスト例

POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
 
{
    "clientKey": "YOUR_API_KEY",
    "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

レスポンス例

{
    "errorId": 0,
    "errorCode": null,
    "errorDescription": null,
    "solution": {
        "userAgent": "xxx", // User-Agent
        "secChUa": "xxx", // Sec-Ch-Ua
        "createTime": 1671615324290, // トークンの作成時間
        "gRecaptchaResponse": "3AHJ......", // トークン
        "recaptcha-ca-t": "AbEM......", // 一部のv3ウェブサイトにはセッションモードがあります。isSessionを有効にすると、このパラメータが返され、Cookieとして使用されます。
        "recaptcha-ca-e": "Abp_......" // 一部のv2ウェブサイトにはこのパラメータがあり、Cookieとして使用されます。このような値がある場合、自動的に返されます。
    },
    "status": "ready"
}

SDKリクエストの使用

#pip install --upgrade capsolver
#export CAPSOLVER_API_KEY='...'
 
import capsolver
# capsolver.api_key = "..."
solution = capsolver.solve({
            "type": "ReCaptchaV2TaskProxyLess",
            "websiteURL": "https://www.google.com/recaptcha/api2/demo",
            "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
          })

サンプルコード

# pip install requests
import requests
import time
 
# TODO: set your config
api_key = "YOUR_API_KEY"  # your api key of capsolver
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"  # site key of your target site
site_url = "https://www.google.com/recaptcha/api2/demo"  # page url of your target site
 
 
def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'ReCaptchaV2TaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url
        }
    }
    res = requests.post("https://api.capsolver.com/createTask", json=payload)
    resp = res.json()
    task_id = resp.get("taskId")
    if not task_id:
        print("Failed to create task:", res.text)
        return
    print(f"Got taskId: {task_id} / Getting result...")
 
    while True:
        time.sleep(1)  # delay
        payload = {"clientKey": api_key, "taskId": task_id}
        res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
        resp = res.json()
        status = resp.get("status")
        if status == "ready":
            return resp.get("solution", {}).get('gRecaptchaResponse')
        if status == "failed" or resp.get("errorId"):
            print("Solve failed! response:", res.text)
            return
 
 
token = capsolver()
print(token)