NEW標準的なcreateTaskおよびin.php API。アドレスを変更するだけで接続できます。APIドキュメントを見る
GATESOLVER
始める

APIドキュメント

リクエストはJSONで、エンドポイントは1つ(https://gatesolver.com)です。アカウント画面で作ったAPIキーを clientKey として送ります。タスクを作成し(createTask)、数秒後に結果を受け取ります(getTaskResult)。

ベースURL
https://gatesolver.com
認証
本文の clientKey
リクエスト制限
キー1つで1分あたり600回
形式
JSON (POST)

始める

  1. 登録して残高をチャージします。
  2. アカウント画面のAPIキーメニューでキーを作成します。キーは作成時に一度だけ表示されます。
  3. createTask でタスクを作成し、受け取った taskId で getTaskResult を数秒ごとに呼び出します。
  4. status が ready になったら、solution をページに入れます。

createTask形式用に構築されたクライアントは、APIアドレスを変更するだけでそのまま動作します。新しいアドレス: https://gatesolver.com

createTask

POST https://gatesolver.com/createTask

タスクを作成し、taskId を返します。この時点では課金されません。

項目形式必須説明
clientKeystringはいAPIキー
taskobjectはいタスクの内容。type と種類別の項目 (下のタスクtype表と種類別ページ)
callbackUrlstringいいえ受け付けていません。getTaskResult で結果を受け取ります。

リクエスト

{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "ReCaptchaV2TaskProxyLess",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
  }
}

レスポンス

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

getTaskResult

POST https://gatesolver.com/getTaskResult

タスクの結果を返します。トークン型は3秒、画像認識は1秒間隔での問い合わせをおすすめします。回答が出た時点で1件分の料金が残高から引かれます。

項目説明
statusprocessing (待機中)、ready (回答あり)、failed (失敗、課金なし)
solution回答。種類によって項目が異なります (gRecaptchaResponse、token、cookie、text など)
costこのタスクで引かれた金額(米ドル)
createTime / endTime作成時刻と完了時刻(ミリ秒)
{
  "errorId": 0,
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006",
  "status": "ready",
  "solution": { "gRecaptchaResponse": "03AFcWeA6...", "userAgent": "Mozilla/5.0 ..." },
  "cost": "0.000560"
}

getBalance

POST https://gatesolver.com/getBalance

残高を米ドルで返します。

{ "clientKey": "YOUR_API_KEY" }

{ "errorId": 0, "balance": 42.5 }

タスクtype

type名は大文字・小文字を区別しません。種類ごとの項目と例は各種類のページにあります。

type種類1,000件
ReCaptchaV2TaskProxyLessreCAPTCHA v2$0.56
ReCaptchaV2TaskreCAPTCHA v2$0.56
ReCaptchaV2EnterpriseTaskProxyLessreCAPTCHA v2 Enterprise$0.70
ReCaptchaV2EnterpriseTaskreCAPTCHA v2 Enterprise$0.70
ReCaptchaV3TaskProxyLessreCAPTCHA v3$0.70
ReCaptchaV3TaskreCAPTCHA v3$0.70
ReCaptchaV3EnterpriseTaskProxyLessreCAPTCHA v3 Enterprise$2.10
ReCaptchaV3EnterpriseTaskreCAPTCHA v3 Enterprise$2.10
AntiTurnstileTaskProxyLessCloudflare Turnstile$0.84
TurnstileTaskProxylessCloudflare Turnstile$0.84
AntiCloudflareTaskCloudflare Challenge$0.84
AntiAwsWafTaskProxyLessAWS WAF$1.40
AntiAwsWafTaskAWS WAF$1.40
GeeTestTaskProxyLessGeeTest v3 / v4$0.84
GeeTestTaskGeeTest v3 / v4$0.84
MtCaptchaTaskProxyLessMTCaptcha$2.10
MtCaptchaTaskMTCaptcha$2.10
DatadomeSliderTaskDataDome Slider$1.75
ImageToTextTaskImage to Text$0.28
ReCaptchaV2ClassificationreCAPTCHA Image Classification$0.28
AwsWafClassificationAWS WAF Image Classification$0.42
VisionEngineVision Engine$1.05

エラーコード

エラー時は errorId が1になり、errorCode と errorDescription が一緒に返ります。エラー応答には課金されません。

errorCode意味
ERROR_KEY_DENIED_ACCESSclientKey がないか、正しくありません。
ERROR_ZERO_BALANCE残高が足りません。チャージしてから再度リクエストしてください。
ERROR_TASK_NOT_SUPPORTED対応していないタスクtypeです。
ERROR_INVALID_TASK_DATA必要な項目が抜けています。errorDescription に抜けている項目名があります。
ERROR_TASKID_INVALIDこのキーで作成した taskId ではないか、存在しない taskId です。
ERROR_CAPTCHA_UNSOLVABLE解決できませんでした。課金はされていません。再度リクエストしてください。
ERROR_SERVICE_UNAVAILABLEネットワークエラーです。課金はされていません。少し待ってから再度リクエストしてください。
ERROR_RATE_LIMIT1分あたり600回を超えました。リクエストの間隔を空けてください。
ERROR_ACCOUNT_SUSPENDED停止されたアカウントです。

in.php互換

in.php形式のプログラムはアドレスを変えるだけです。対応method: userrecaptcha (reCAPTCHA v2)、turnstile、geetest、base64・post (画像文字)。

GET https://gatesolver.com/in.php?key=YOUR_API_KEY&method=userrecaptcha&googlekey=6Le...&pageurl=https://example.com
OK|61138bb6-19fb-11ec-a9c8-0242ac110006

GET https://gatesolver.com/res.php?key=YOUR_API_KEY&action=get&id=61138bb6-19fb-11ec-a9c8-0242ac110006
CAPCHA_NOT_READY
OK|03AFcWeA6...

GET https://gatesolver.com/res.php?key=YOUR_API_KEY&action=getbalance
42.50000

json=1 を付けると {"status":1,"request":"..."} の形で返します。

サンプル

import requests, time

API, KEY = "https://gatesolver.com", "YOUR_API_KEY"

def solve(task, wait=3, timeout=120):
    r = requests.post(f"{API}/createTask", json={"clientKey": KEY, "task": task}, timeout=30).json()
    if r.get("errorId"):
        raise RuntimeError(r["errorCode"])
    end = time.time() + timeout
    while time.time() < end:
        time.sleep(wait)
        res = requests.post(f"{API}/getTaskResult", json={"clientKey": KEY, "taskId": r["taskId"]}, timeout=30).json()
        if res.get("errorId"):
            raise RuntimeError(res["errorCode"])
        if res["status"] == "ready":
            return res["solution"]
    raise TimeoutError("task timed out")

print(solve({"type": "ReCaptchaV2TaskProxyLess", "websiteURL": "https://example.com", "websiteKey": "6Le..."}))