NEW标准的 createTask 和 in.php API。更换地址即可连接。查看 API 文档
GATESOLVER
开始使用

API 文档

请求为 JSON 格式,地址只有一个(https://gatesolver.com)。将账户页面创建的 API 密钥作为 clientKey 发送。先创建任务(createTask),几秒后获取结果(getTaskResult)。

基础地址
https://gatesolver.com
认证
请求体中的 clientKey
请求限制
单个密钥 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 不属于此密钥,或不存在。
ERROR_CAPTCHA_UNSOLVABLE识别失败,未扣费。请重新请求。
ERROR_SERVICE_UNAVAILABLE网络错误,未扣费。请稍后重新请求。
ERROR_RATE_LIMIT已超过 1 分钟 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..."}))