ReCaptchaV2: reCAPTCHA v2の解決
TIP
タスクはcreateTaskメソッドで作成し、結果はgetTaskResultメソッドで取得します。
対応しているタスクタイプtypes
:
ReCaptchaV2TaskProxyLess
は、サーバーの内蔵プロキシを使用します。ReCaptchaV2EnterpriseTask
このタスクタイプは、ご自身のプロキシが必要です。ReCaptchaV2EnterpriseTaskProxyLess
は、サーバーの内蔵プロキシを使用します。
タスクの作成
createTaskメソッドを使用してタスクを作成します。
タスクを作成する前に、PlaywrightやPuppeteerなどの自動化ツールでトークンを使用する必要がある場合、それらのコールバック関数を見つける必要があるかもしれません。参照:
タスクオブジェクトの構造
WARNING
パラメータの設定方法がわからない場合は、CapSolver拡張機能を使用して必要なパラメータを自動的に取得してください。
v2トークンが無効であると判明した場合は、CapSolver拡張機能を使用してJSON設定を取得し、当社のカスタマーサービスに送信して設定してください。設定後、トークンのスコアが大幅に向上します。
プロパティ | タイプ | 必須 | 説明 |
---|---|---|---|
type | String | 必須 | ReCaptchaV2TaskProxyLess ReCaptchaV2EnterpriseTask ReCaptchaV2EnterpriseTaskProxyLess |
websiteURL | String | 必須 | キャプチャを読み込むターゲットウェブページのURL。ホスト名だけでなく完全なURLを送信するのが最適です。 |
websiteKey | String | 必須 | Recaptchaのウェブサイトキー。 |
proxy | String | オプション | プロキシの使用について学びましょう。 |
pageAction | String | オプション | ReCaptchaV2の場合、/anchor エンドポイントのペイロードにsa パラメータがある場合、その値を送信してください。 |
recaptchaDataSValue | String | オプション | ReCaptchaV2の通常バージョンで、/anchor エンドポイントのペイロードにs パラメータがある場合、その値を送信してください。 |
enterprisePayload | Object | オプション | ReCaptchaV2のエンタープライズバージョンで、/anchor エンドポイントのペイロードにs パラメータがある場合、その値を送信してください。 |
isInvisible | Bool | オプション | 「私はロボットではありません」チェックボックスがないがチャレンジが表示される場合、通常v2のインビジブルモードで必要とされます。 |
isSession | Bool | オプション | セッションモードを有効にすると、Cookieとして使用されるrecaptcha-ca-t 値が返されます。通常v3に表示されます。注: 一部のウェブサイトでは recaptcha-ca-e 値が必要で、通常v2に表示されます。この値が存在する場合、追加のパラメータ設定なしで自動的に返されます。 |
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」を受け取るはずです。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)