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 가 아니거나 없는 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..."}))