UNLOCK API
GeeTest v3 / v4

GeeTest v3 / v4

Как отправить задачу GeeTest v3 / v4 в UNLOCK API через createTask или in.php: названия типов задач, все параметры, объект solution, поля прокси и примеры кода на 7 языках.
Цена
$0.70 $0.0007 за задачу
Вы отправляете
URL страницы с gt и challenge (v3) или captcha_id (v4)
Вы получаете
Значения, которые отправляет форма GeeTest

Обзор и цена

Названия типов задачи

Используйте первое название, чтобы решать без прокси. Используйте второе название и добавьте поля прокси, чтобы решать через свой прокси. Цена одинаковая.
GeeTestTaskProxylessБез прокси
GeeTestTaskЧерез ваш прокси

Объект задачи

type
StringОбязательный
Название типа задачи. Регистр букв не важен. GeeTestTaskProxyless | GeeTestTask
websiteURL
StringОбязательный
Полный адрес страницы, на которой показана капча, начиная с http:// или https://.
gt
StringНеобязательный
GeeTest v3: значение gt со страницы.
challenge
StringНеобязательный
GeeTest v3: свежее значение challenge. Получайте новое для каждой задачи.
geetestApiServerSubdomain
StringНеобязательный
API-сервер GeeTest, если страница использует свой.
version
IntegerНеобязательный
4 для GeeTest v4. По умолчанию 3.
initParameters
ObjectНеобязательный
GeeTest v4: объект с captcha_id.
userAgent
StringНеобязательный
User-Agent браузера для решения. Отправляйте тот же, когда передаёте ответ.

Поля, которых здесь нет, передаются решателю как есть.

Поля прокси

Только для названия типа с прокси. Отправьте либо отдельные поля, либо одну строку proxy.
proxyType
StringОбязательный
http, https, socks4 или socks5.
proxyAddress
StringОбязательный
IP-адрес или имя хоста прокси.
proxyPort
IntegerОбязательный
Порт прокси.
proxyLogin
StringНеобязательный
Имя пользователя прокси, если оно нужно.
proxyPassword
StringНеобязательный
Пароль прокси, если он нужен.
proxy
String
Все поля прокси одной строкой, например http://user:pass@1.2.3.4:8080.

Работа через прокси

Запрос

POST /createTask
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "GeeTestTaskProxyless",
    "websiteURL": "https://example.com/login",
    "gt": "81388ea1fc187e0c335c0a8907ff2625",
    "challenge": "2e2f0f65240058b683cb6ea21c303eea"
  }
}

Объект solution

Возвращается в solution, когда status равен ready.
challenge
String
challenge GeeTest v3 для отправки.
validate
String
Значение validate GeeTest v3.
seccode
String
Значение seccode GeeTest v3.
captcha_id
String
captcha_id GeeTest v4.
lot_number
String
lot_number GeeTest v4.
pass_token
String
pass_token GeeTest v4.
gen_time
String
gen_time GeeTest v4.
captcha_output
String
captcha_output GeeTest v4.
POST /getTaskResult
{
  "errorId": 0,
  "taskId": 1001,
  "status": "ready",
  "solution": {
    "challenge": "1ad03db8aff920037fb8117827eab171gu",
    "validate": "0e0ab9f2fdbf7b8e2c3c1a2d4f2c9b07",
    "seccode": "0e0ab9f2fdbf7b8e2c3c1a2d4f2c9b07|jordan",
    "captcha_id": "(v4) e392e1d7fd421dc63325744d5a2b9c73",
    "lot_number": "(v4) e6c3bed2854f41f880662c48afff5dcb",
    "pass_token": "(v4) fad5eb52fc83bf7617f4...",
    "gen_time": "(v4) 1693924478",
    "captcha_output": "(v4) fN36ufW6cQN2SQ-I..."
  },
  "cost": "0.0007",
  "createTime": 1791640000,
  "endTime": 1791640014,
  "solveCount": 1
}

Примеры кода

import time, requests

API = "https://unlock-api.com"
KEY = "YOUR_API_KEY"

task = requests.post(f"{API}/createTask", json={
    "clientKey": KEY,
    "task": {
      "type": "GeeTestTaskProxyless",
      "websiteURL": "https://example.com/login",
      "gt": "81388ea1fc187e0c335c0a8907ff2625",
      "challenge": "2e2f0f65240058b683cb6ea21c303eea"
    }
}).json()
if task["errorId"]:
    raise SystemExit(task["errorCode"])

for _ in range(60):   # 60 x 5 s = the 5 minute task limit
    time.sleep(5)
    r = requests.post(f"{API}/getTaskResult", json={"clientKey": KEY, "taskId": task["taskId"]}).json()
    if r["errorId"]:
        raise SystemExit(f"{r['errorCode']}: {r.get('errorDescription', '')}")   # failed tasks are refunded
    if r["status"] == "ready":
        print(r["solution"])
        break
else:
    raise SystemExit("timed out")

Метод формы in.php

Та же задача через классический запрос с формой. res.php возвращает ответ текстом.
in.php, res.php
curl -s "https://unlock-api.com/in.php" -d "key=YOUR_API_KEY&method=geetest&gt=GT&challenge=CHALLENGE&pageurl=https://example.com/login&json=1"
# {"status":1,"request":"1001"}

curl -s "https://unlock-api.com/res.php?key=YOUR_API_KEY&action=get&id=1001&json=1"
# {"status":0,"request":"CAPCHA_NOT_READY"}  then  {"status":1,"request":"ANSWER"}

API форм: in.php и res.php