ReCaptchaV3: reCAPTCHA v3の解決
TIP
createTask メソッドでタスクを作成し、 getTaskResult メソッドで結果を取得してください。
弊社がサポートするタスクタイプは以下の通りです。
ReCaptchaV3Task
このタスクタイプには、お客様自身のプロキシが必要です。ReCaptchaV3EnterpriseTask
このタスクタイプには、お客様自身のプロキシが必要です。ReCaptchaV3TaskProxyLess
は、サーバーの組み込みプロキシを使用します。ReCaptchaV3EnterpriseTaskProxyLess
は、サーバーの組み込みプロキシを使用します。
タスクの作成
createTask メソッドでタスクを作成します。
タスクを作成する前に、playwright や puppeteer のような自動化ツールでトークンを使用する必要がある場合、それらのコールバック関数を見つける必要があるかもしれません。参照:
タスクオブジェクトの構造
WARNING
パラメータの設定方法がわからない場合は、CapSolver拡張機能を使用して必要なパラメータを自動的に取得してください。
v3トークンが無効であると判明した場合は、CapSolver拡張機能を使用してJSON設定を取得し、設定のために弊社のカスタマーサービスに送信してください。設定後、トークンのスコアが大幅に向上します。
プロパティ | 型 | 必須 | 説明 |
---|---|---|---|
type | String | 必須 | ReCaptchaV3Task ReCaptchaV3TaskProxyLess ReCaptchaV3EnterpriseTask ReCaptchaV3EnterpriseTaskProxyLess |
websiteURL | String | 必須 | reCAPTCHAが設置されているウェブサイトのアドレス。 |
websiteKey | String | 必須 | reCAPTCHAのウェブサイトキー。 |
proxy | String | オプション | プロキシの使用方法 を参照してください。 |
pageAction | String | オプション | ReCaptchaV3の場合: grecaptcha.execute を検索することで、actionパラメータの値を見つけることができます。 |
enterprisePayload | Object | オプション | Enterprise版の場合: grecaptcha.enterprise.render を検索し、s パラメータを渡します。 |
isSession | Bool | オプション | セッションモード。有効にすると、Cookieとして使用される recaptcha-ca-t の値が返されます。通常、v3に現れます。注: 一部のウェブサイトでは、通常v2に現れる recaptcha-ca-e の値が必要です。この値が存在する場合、追加のパラメータ設定なしに自動的に返されます。 |
apiDomain | String | オプション | キャプチャをロードするためのドメイン名。通常、このパラメータを渡す必要はありません。 • 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」を受け取ります。 タスク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": "ReCaptchaV3TaskProxyLess",
"websiteURL": "https://www.google.com",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-",
"pageAction": "login",
})
サンプルコード
# pip install requests
import requests
import time
# TODO: 設定をしてください
api_key = "YOUR_API_KEY" # CapSolverのAPIキー
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-" # ターゲットサイトのサイトキー
site_url = "https://www.google.com" # ターゲットサイトのページURL
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'ReCaptchaV3TaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url,
"pageAction": "login",
}
}
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) # 遅延
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)