UNLOCK API
GeeTest v3 / v4

GeeTest v3 / v4

So senden Sie eine GeeTest v3 / v4-Aufgabe mit createTask oder in.php an UNLOCK API: Namen der Aufgabentypen, alle Parameter, das solution-Objekt, Proxy-Felder und Codebeispiele in 7 Sprachen.
Preis
$0.70 $0.0007 pro Aufgabe
Sie senden
Seiten-URL mit gt und challenge (v3) oder captcha_id (v4)
Sie erhalten
Die Werte, die das GeeTest-Formular sendet

Überblick und Preis

Namen der Aufgabentypen

Verwenden Sie den ersten Namen, um ohne Proxy zu lösen. Verwenden Sie den zweiten Namen und fügen Sie die Proxy-Felder hinzu, um über Ihren eigenen Proxy zu lösen. Der Preis ist gleich.
GeeTestTaskProxylessOhne Proxy
GeeTestTaskÜber Ihren Proxy

Aufgabenobjekt

type
StringPflicht
Name des Aufgabentyps. Groß- und Kleinschreibung spielt keine Rolle. GeeTestTaskProxyless | GeeTestTask
websiteURL
StringPflicht
Vollständige Adresse der Seite, auf der das CAPTCHA erscheint, beginnend mit http:// oder https://.
gt
StringOptional
GeeTest v3: der Wert gt von der Seite.
challenge
StringOptional
GeeTest v3: ein frischer challenge-Wert. Holen Sie für jede Aufgabe einen neuen.
geetestApiServerSubdomain
StringOptional
GeeTest-API-Server, falls die Seite einen eigenen verwendet.
version
IntegerOptional
4 für GeeTest v4. Standard 3.
initParameters
ObjectOptional
GeeTest v4: ein Objekt mit captcha_id.
userAgent
StringOptional
Browser-User-Agent, der beim Lösen verwendet wird. Senden Sie denselben, wenn Sie die Antwort übermitteln.

Hier nicht aufgeführte Felder werden unverändert an den Solver weitergegeben.

Proxy-Felder

Nur für den Typnamen mit Proxy. Senden Sie entweder die einzelnen Felder oder einen proxy-String.
proxyType
StringPflicht
http, https, socks4 oder socks5.
proxyAddress
StringPflicht
IP-Adresse oder Hostname des Proxys.
proxyPort
IntegerPflicht
Port des Proxys.
proxyLogin
StringOptional
Benutzername des Proxys, falls nötig.
proxyPassword
StringOptional
Passwort des Proxys, falls nötig.
proxy
String
Alle Proxy-Felder in einem String, zum Beispiel http://user:pass@1.2.3.4:8080.

Proxy verwenden

Anfrage

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

solution-Objekt

Wird in solution zurückgegeben, wenn status ready ist.
challenge
String
Zu übermittelnde GeeTest-v3-challenge.
validate
String
GeeTest-v3-Wert validate.
seccode
String
GeeTest-v3-Wert seccode.
captcha_id
String
GeeTest v4 captcha_id.
lot_number
String
GeeTest v4 lot_number.
pass_token
String
GeeTest v4 pass_token.
gen_time
String
GeeTest v4 gen_time.
captcha_output
String
GeeTest v4 captcha_output.
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
}

Codebeispiele

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-Formularmethode

Dieselbe Aufgabe mit der klassischen Formularanfrage. res.php gibt die Antwort als Text zurück.
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"}

Formular-API: in.php und res.php