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..."}))