UNLOCK API
GeeTest v3 / v4

GeeTest v3 / v4

Jak wysłać zadanie GeeTest v3 / v4 do UNLOCK API przez createTask lub in.php: nazwy typów zadań, wszystkie parametry, obiekt solution, pola proxy i przykłady kodu w 7 językach.
Cena
$0.70 $0.0007 za zadanie
Wysyłasz
URL strony z gt i challenge (v3) lub captcha_id (v4)
Otrzymujesz
Wartości wysyłane przez formularz GeeTest

Przegląd i cena

Nazwy typu zadania

Użyj pierwszej nazwy, aby rozwiązywać bez proxy. Użyj drugiej nazwy i dodaj pola proxy, aby rozwiązywać przez własne proxy. Cena jest taka sama.
GeeTestTaskProxylessBez proxy
GeeTestTaskPrzez Twoje proxy

Obiekt zadania

type
StringWymagane
Nazwa typu zadania. Wielkość liter nie ma znaczenia. GeeTestTaskProxyless | GeeTestTask
websiteURL
StringWymagane
Pełny adres strony, na której pojawia się CAPTCHA, zaczynający się od http:// lub https://.
gt
StringOpcjonalne
GeeTest v3: wartość gt ze strony.
challenge
StringOpcjonalne
GeeTest v3: świeża wartość challenge. Pobieraj nową dla każdego zadania.
geetestApiServerSubdomain
StringOpcjonalne
Serwer API GeeTest, jeśli strona używa własnego.
version
IntegerOpcjonalne
4 dla GeeTest v4. Domyślnie 3.
initParameters
ObjectOpcjonalne
GeeTest v4: obiekt z captcha_id.
userAgent
StringOpcjonalne
User-Agent przeglądarki używany przy rozwiązywaniu. Wyślij ten sam, gdy przesyłasz odpowiedź.

Pola niewymienione tutaj są przekazywane do rozwiązującego bez zmian.

Pola proxy

Tylko dla nazwy typu z proxy. Wyślij osobne pola albo jeden ciąg proxy.
proxyType
StringWymagane
http, https, socks4 lub socks5.
proxyAddress
StringWymagane
Adres IP lub nazwa hosta proxy.
proxyPort
IntegerWymagane
Port proxy.
proxyLogin
StringOpcjonalne
Nazwa użytkownika proxy, jeśli proxy jej wymaga.
proxyPassword
StringOpcjonalne
Hasło proxy, jeśli proxy go wymaga.
proxy
String
Wszystkie pola proxy w jednym ciągu, na przykład http://user:pass@1.2.3.4:8080.

Korzystanie z proxy

Żądanie

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

Obiekt solution

Zwracany w solution, gdy status ma wartość ready.
challenge
String
challenge GeeTest v3 do wysłania.
validate
String
Wartość validate GeeTest v3.
seccode
String
Wartość 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
}

Przykłady kodu

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

Metoda formularza in.php

To samo zadanie przez klasyczne żądanie formularza. res.php zwraca odpowiedź jako tekst.
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 formularzy: in.php i res.php