タスクタイプ
reCAPTCHA v3
このページは中国語版から機械翻訳されたもので、不正確な箇所がある可能性があります。中国語版を正としてください。
reCAPTCHA v3 にはチェックボックスも画像もなく、ページがバックグラウンドで訪問者をスコアリングします。YesCaptcha は token(gRecaptchaResponse)を返すので、それを対象サイトに送信してください。RecaptchaV3TaskProxyless は 1 タスクあたり 20 ポイント(約 $3.00 / 1k) で、非同期で結果を返します。まず createTask を呼び、その後 5 秒ごとに getTaskResult を呼びます。認識に失敗した場合やタイムアウトした場合は、自動的に返金されます。
https://api.yescaptcha.com/createTaskグローバルエンドポイントhttps://cn.yescaptcha.com/createTask中国エンドポイントリクエストボディは JSON で、clientKey で認証します。タスクを作成したエンドポイントと同じエンドポイントで結果を取得してください。
- ページのソースに
grecaptcha.execute(...)がある、またはrecaptcha/api.js?render=サイトキーを読み込んでいる場合: 通常版の v3 です。 grecaptcha.enterprise.execute(...)を呼んでいる、またはrecaptcha/enterprise.jsを読み込んでいる場合: Enterprise 版の v3 です。RecaptchaV3EnterpriseTaskまたはRecaptchaV3EnterpriseTaskM1を使います。
判別方法は キャプチャの種類を判別する を参照してください。
タイプと料金
Section titled “タイプと料金”| タスクタイプ | 価格 | 返却方式 | 備考 |
|---|---|---|---|
RecaptchaV3TaskProxyless | $3.00 / 1k; 20 ポイント/タスク · ¥20 / 1k | 非同期 | |
RecaptchaV3TaskProxylessM1 | $3.75 / 1k; 25 ポイント/タスク · ¥25 / 1k | 非同期 | |
RecaptchaV3TaskProxylessM1S7 | $4.50 / 1k; 30 ポイント/タスク · ¥30 / 1k | 非同期 | スコア 0.7 を要求します。追加のパラメータは不要です |
RecaptchaV3TaskProxylessM1S9 | $5.25 / 1k; 35 ポイント/タスク · ¥35 / 1k | 非同期 | スコア 0.9 を要求します。追加のパラメータは不要です |
RecaptchaV3EnterpriseTask | $3.00 / 1k; 20 ポイント/タスク · ¥20 / 1k | 非同期 | |
RecaptchaV3EnterpriseTaskM1 | $3.75 / 1k; 25 ポイント/タスク · ¥25 / 1k | 非同期 |
米ドル価格は US$1 ≈ ¥6.67 での概算です。タスクはポイントで課金されます。
RecaptchaV3TaskProxylessとRecaptchaV3TaskProxylessM1はパラメータが同じで、経路が異なります。互いのバックアップとして使えます。- 対象サイトが高いスコアを要求する場合は、固定スコアの
RecaptchaV3TaskProxylessM1S7(0.7)またはRecaptchaV3TaskProxylessM1S9(0.9)を使います。追加のパラメータは不要です。
リクエストパラメータ
Section titled “リクエストパラメータ”| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
type | string | はい | タスクタイプ。値はこのページの「タイプと料金」を参照してください |
websiteURL | string | はい | キャプチャが表示されるページの完全な URL。キャプチャが表示されるサイトを指定し、キャプチャ提供元のドメインは指定しないでください |
websiteKey | string | はい | サイトキー(sitekey)。ページのソースまたはネットワークリクエストから確認できます。通常は変わりません |
pageAction | string | いいえ | reCAPTCHA v3 の action。ページが grecaptcha.execute に渡す値と一致させる必要があります。一致しないと token が無効になる場合があります |
pageAction は、ページが grecaptcha.execute(サイトキー, {action: '...'}) を呼ぶ際に渡す action と一致させる必要があります。誤っていると、token がサイトに拒否されることがあります。確認方法は reCAPTCHA のパラメータを調べる を参照してください。
リクエスト例
Section titled “リクエスト例”{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "RecaptchaV3TaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "SITE_KEY_OF_THE_PAGE", "pageAction": "login" }}curl -s https://api.yescaptcha.com/createTask \ -H 'Content-Type: application/json' \ -d '{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "RecaptchaV3TaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "SITE_KEY_OF_THE_PAGE", "pageAction": "login" }}'
# Returns {"errorId":0,"taskId":"..."}; then poll every 5 seconds:curl -s https://api.yescaptcha.com/getTaskResult \ -H 'Content-Type: application/json' \ -d '{"clientKey": "YOUR_CLIENT_KEY", "taskId": "TASK_ID"}'import osimport time
import requests
API = "https://api.yescaptcha.com"CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] # Read the clientKey from an environment variable
def call(method, payload): r = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30) data = r.json() if data.get("errorId"): raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}") return data
def solve(task): task_id = call("createTask", {"task": task})["taskId"] for _ in range(36): # Poll every 5 seconds, for up to about 3 minutes time.sleep(5) result = call("getTaskResult", {"taskId": task_id}) if result.get("status") == "ready": return result["solution"] raise TimeoutError(task_id)
solution = solve({ "type": "RecaptchaV3TaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "SITE_KEY_OF_THE_PAGE", "pageAction": "login",})print(solution["gRecaptchaResponse"])const API = 'https://api.yescaptcha.com';const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; // Read the clientKey from an environment variable
async function call(method, payload) { const res = await fetch(`${API}/${method}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clientKey: CLIENT_KEY, ...payload }), }); const data = await res.json(); if (data.errorId) throw new Error(`${data.errorCode}: ${data.errorDescription}`); return data;}
async function solve(task) { const { taskId } = await call('createTask', { task }); for (let i = 0; i < 36; i++) { // Poll every 5 seconds, for up to about 3 minutes await new Promise((r) => setTimeout(r, 5000)); const result = await call('getTaskResult', { taskId }); if (result.status === 'ready') return result.solution; } throw new Error(`timeout: ${taskId}`);}
const solution = await solve({ type: "RecaptchaV3TaskProxyless", websiteURL: "https://example.com/login", websiteKey: "SITE_KEY_OF_THE_PAGE", pageAction: "login",});console.log(solution.gRecaptchaResponse);websiteURL、websiteKey、pageAction は、対象サイトの値に置き換えてください。
{ "errorId": 0, "status": "ready", "solution": { "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnU..." }}| フィールド | 型 | 説明 |
|---|---|---|
gRecaptchaResponse | string | 対象サイトに送信するトークン。1 回限りの使用で、有効期間は約 120 秒です。60 秒以内に使用してください |
処理中の場合は {"errorId": 0, "status": "processing"} が返るので、5 秒後に再度取得してください。エラーが返った場合は errorCode に従って対処します。詳しくは エラーコード を参照してください。取得した token の送信方法は token で reCAPTCHA を完了する を参照してください。
よくある質問
Section titled “よくある質問”token がサイトに受け入れられないことがあるのはなぜですか?
Section titled “token がサイトに受け入れられないことがあるのはなぜですか?”v3 では、対象サイトがスコアに基づいて判定します。サイト側のしきい値はいつでも変更できるため、すべての token が通るわけではありません。pageAction が正しいことを確認してください。サイトが高いスコアを要求する場合は M1S7 や M1S9 を試すか、同系統の他のタイプと比較してください。
Enterprise 版の v3 はどう指定しますか?
Section titled “Enterprise 版の v3 はどう指定しますか?”通常版と同様に websiteURL、websiteKey、pageAction を指定し、タイプを RecaptchaV3EnterpriseTask または RecaptchaV3EnterpriseTaskM1 に変更します。
token の有効期間はどのくらいですか?
Section titled “token の有効期間はどのくらいですか?”1 回限りの使い捨てで、有効期間は約 120 秒です。60 秒以内に送信することをおすすめします。
関連チュートリアル
Section titled “関連チュートリアル”- キャプチャの種類を判別する
- reCAPTCHA のパラメータを調べる(
pageActionの調べ方を含む) - token で reCAPTCHA を完了する