NeuroCaptcha

GeeTestTask

Parameters, request and response for GeeTest v3 solved through your proxy: the GeeTestTask task type.

On this page

GeeTest v3: the slide or click captcha created by initGeetest({gt, challenge}). The task is solved through your proxy, so the answer is issued for your IP address.

Price$0.90 per 1000 tasks ($0.0009 per task), only for solved tasks — pricing
Proxyrequired — your proxy
Queue in getQueueStats—
Also accepted as—

Parameters#

Fields of the task object in createTask:

type
stringrequired
GeeTestTask
websiteURL
stringrequired
Full address of the page with the captcha: http(s), up to 2048 characters, a public site.
gt
stringrequired
GeeTest gt: the public id of the site, passed to initGeetest and seen in requests to api.geetest.com.
challenge
stringrequired
GeeTest challenge: a one-time value the site issues for every captcha. Fetch a fresh one for each task.
userAgent
string
User-Agent of the browser that will submit the token, up to 512 characters. It is returned in solution.userAgent.
cookies
string
Cookies of the target site for the solving browser: name=value; name2=value2, up to 8192 characters. Stored encrypted.
proxyType
string
http (default), https, socks4 or socks5.
proxyAddress
stringrequired
IP address or host name of the proxy. Private and local addresses are rejected.
proxyPort
integerrequired
Proxy port, 1–65535.
proxyLogin
string
Proxy login, up to 256 characters. Stored encrypted.
proxyPassword
string
Proxy password, up to 256 characters. Stored encrypted.

Request#

POST /createTask
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "GeeTestTask",
    "websiteURL": "https://example.com/login",
    "gt": "81388ea1fc187e0c335c0a8907ff2625",
    "challenge": "2e2f0f65240058b683cb6ea21c303eea",
    "proxyType": "http",
    "proxyAddress": "proxy.example.com",
    "proxyPort": 8080,
    "proxyLogin": "user",
    "proxyPassword": "pass"
  }
}

Complete example#

Create the task, poll every 2 seconds, print the solution:

import os
import time

import requests

API = "https://neurocaptcha.com"
KEY = os.environ["API_KEY"]


def call(method, payload):
    data = requests.post(f"{API}/{method}", json={"clientKey": KEY, **payload}, timeout=30).json()
    if data.get("errorId"):
        raise RuntimeError(f'{data["errorCode"]}: {data.get("errorDescription", "")}')
    return data


task = {
    "type": "GeeTestTask",
    "websiteURL": "https://example.com/login",
    "gt": "81388ea1fc187e0c335c0a8907ff2625",
    "challenge": "2e2f0f65240058b683cb6ea21c303eea",
    "proxyType": "http",
    "proxyAddress": "proxy.example.com",
    "proxyPort": 8080,
    "proxyLogin": "user",
    "proxyPassword": "pass",
}

# 1. create the task: its price is held, not charged
task_id = call("createTask", {"task": task})["taskId"]

# 2. poll every 2 s; a failed task raises with its error code and costs nothing
deadline = time.time() + 300
while time.time() < deadline:
    time.sleep(2)
    result = call("getTaskResult", {"taskId": task_id})
    if result["status"] == "ready":
        print(result["solution"])
        break
else:
    raise TimeoutError("the task was not solved in time")

Response#

getTaskResult once the task is solved:

getTaskResult
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "challenge": "2e2f0f65240058b683cb6ea21c303eeaxy",
    "validate": "d0b6dc3d84b1d3e9e94e5c2c2b8e1d3a",
    "seccode": "d0b6dc3d84b1d3e9e94e5c2c2b8e1d3a|jordan",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36"
  },
  "cost": "0.000900",
  "ip": "198.51.100.7",
  "createTime": 1793370000,
  "endTime": 1793370007,
  "solveCount": 1
}

Tips#

  • Find gt and challenge in the page code or in the request to api.geetest.com/get.php (DevTools → Network).
  • The challenge is single-use: request a new one from the site for every task.
  • Send challenge, validate and seccode from the solution the way the page sends geetest_challenge, geetest_validate and geetest_seccode.
  • Submit the token through the same proxy and with the same userAgent as in the task. See Proxies.