GeeTestTask: geetest.com’da captchayı proxy ile çöz
Bu tür bir görev, çalışanlarımızın tarayıcılarındaki GeeTest captcha'larını çözer. Uygulamanız web sitesi adresini, gt anahtarını, meydan okuma anahtarını gönderir ve görev tamamlandıktan sonra 3 jetondan oluşan bir çözüm alır. Sürüm GeeTest sürüm 4 için çıktı 5 değerden oluşur ve sorgulama anahtarı gerekli değildir.








Örnekler
Görev nesnesi
İlgili eğitim: FunCaptcha ve Geetest için API parametrelerini bulmak için Chrome'da kesme noktalarını nasıl kullanacağınızı öğrenin
Özellik | Tip | Zorunlu | Amaç |
---|---|---|---|
type | Dize | Evet | GeeTestTask |
websiteURL | Dize | Evet | Bir hedef web sayfasının adresi. Web sitesinde herhangi bir yerde, hatta üye alanında dahi olabilir. Çalışanlarımız o sayfaya gitmez, bunun yerine ziyareti simüle ederler. |
gt | Dize | Evet | Alan adı açık anahtarı, nadiren güncellenir. |
challenge | Dize | Evet | Token anahtarı değiştirme. Her captcha için yeni bir token anahtarı almayı unutmayın, aksi takdirde hatalı görev için faturalanırsınız. |
geetestApiServerSubdomain | Dize | Hayır | Opsiyonel API alt alan adı. Bazı uygulamalar için gerekli olabilir.
![]() |
geetestGetLib | Dize | Hayır | Bazı uygulamalar için gereklidir. JSON’u şifrelenmiş olarak bir dizeye gönder. Değer, tarayıcı geliştirici araçlarında bulunabilir. "initGeetest" işlevini çağırmadan önce bir breakpoint koyun.
![]() |
version | Tam sayı | Hayır | Versiyon numarası. Varsayılan sürüm 3'tür. Desteklenen sürümler: 3 ve 4. |
initParameters | Nesne | Hayır | Sürüm 4 için ek başlatma parametreleri |
proxyType | Dize | Evet | Proxy tipi http - normal http/https proxy socks4 - socks4 proxy socks5 - socks5 proxy |
proxyAddress | Dize | Evet | Proxy IP adresi ipv4/ipv6. Yerel ağlardan ana bilgisayar adı veya IP adresi yok. |
proxyPort | Tam sayı | Evet | Proxy port |
proxyLogin | Dize | Hayır | Kimlik doğrulama (standart) gerektiren proxy için kullanıcı adı |
proxyPassword | Dize | Hayır | Proxy şifresi |
userAgent | Dize | Evet | Tarayıcının emülasyonda kullanılan Kullanıcı-Aracısı. Modern bir tarayıcı imzası kullanmanız gerekmektedir, aksi takdirde Google sizden "tarayıcınızı güncellemenizi" ister. |
Talep örneği (V3)
CURL
curl -i -H "Accept: application/json" \
-H "Content-Type: application/json" \
-X POST -d '{
"clientKey":"YOUR_API_KEY_HERE",
"task":
{
"type":"GeeTestTask",
"websiteURL":"http://mywebsite.com/geetest/test.php",
"gt":"874703612e5cac182812a00e273aad0d",
"challenge":"a559b82bca2c500101a1c8a4f4204742",
"proxyType":"http",
"proxyAddress":"8.8.8.8",
"proxyPort":8080,
"proxyLogin":"proxyLoginHere",
"proxyPassword":"proxyPasswordHere",
"userAgent":"MODERN_USER_AGENT_HERE"
},
"softId": 0
}' https://api.anti-captcha.com/createTask
PHP
<?php
//git clone git@github.com:AdminAnticaptcha/anticaptcha-php.git
include("anticaptcha.php");
include("geetest.php");
$api = new GeeTest();
$api->setVerboseMode(true);
//grabbing challenge key ... ";
$data = json_decode(file_get_contents("https://www.geetest.com/demo/gt/register-enIcon-official?t=1547634498036"), true);
echo "grabbed data:\n";
print_r($data);
if (!isset($data["gt"]) && !isset($data["challange"])) {
echo "something went wrong, probably example was changed or network is inaccessible\n";
exit;
}
$challenge = $data["challenge"];
$gt = $data["gt"];
echo "setting gt=$gt, challenge=$challenge\n";
$api->setWebsiteURL("https://www.geetest.com/en/");
$api->setGTKey($gt);
$api->setChallenge($challenge);
//optional API subdomain, make sure you understand what to set here
$api->setAPISubdomain("optional.subdomain.api.geetest.com");
//read the docs about this optional parameter
$api->setGeetestLib("{\"customlibs\":\"url-to-lib.js\"}");
//proxy access parameters
$api->setProxyType("http");
$api->setProxyAddress("8.8.8.8");
$api->setProxyPort(1234);
//optional login and password
$api->setProxyLogin("login");
$api->setProxyPassword("password");
//your anti-captcha.com account key
$api->setKey("YOUR_API_KEY_HERE");
//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter
$api->setSoftId(0);
//create task in API
if (!$api->createTask()) {
$api->debout("API v2 send failed - ".$api->getErrorMessage(), "red");
return false;
}
$taskId = $api->getTaskId();
//wait in a loop for max 300 seconds till task is solved
if (!$api->waitForResult(300)) {
echo "could not solve captcha\n";
echo $api->getErrorMessage()."\n";
} else {
echo "your geetest tokens:\n";
print_r($api->getTaskSolution());
}
Python
#pip3 install anticaptchaofficial
from anticaptchaofficial.geetestproxyon import *
solver = geetestProxyon()
solver.set_verbose(1)
solver.set_key("YOUR_API_KEY_HERE")
solver.set_website_url("https://address.com")
solver.set_gt_key("CONSTANT_GT_KEY")
solver.set_challenge_key("VARIABLE_CHALLENGE_KEY")
# optional API subdomain, make sure you understand what to set here
# solver.set_js_api_domain("custom-domain.geetest.com")
# getLib payload, see documentation for explanation of this
# solver.set_geetest_lib("{\"customlibs\":\"url-to-lib.js\"}")
solver.set_proxy_address("PROXY_ADDRESS")
solver.set_proxy_port(1234)
solver.set_proxy_login("proxylogin")
solver.set_proxy_password("proxypassword")
solver.set_user_agent("Mozilla/5.0")
# Specify softId to earn 10% commission with your app.
# Get your softId here: https://anti-captcha.com/clients/tools/devcenter
solver.set_soft_id(0)
token = solver.solve_and_return_solution()
if token != 0:
print "result tokens: "
print token
else:
print "task finished with error "+solver.error_code
NodeJS
//npm install @antiadmin/anticaptchaofficial
//https://github.com/AdminAnticaptcha/anticaptcha-npm
const ac = require("@antiadmin/anticaptchaofficial");
ac.setAPIKey('YOUR_API_KEY_HERE');
//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter
ac.setSoftId(0);
ac.solveGeeTestProxyOn('http://DOMAIN.COM',
'GT',
'CHALLENGE',
'API_SUBDOMAIN',
'GET_LIB',
'http', //http, socks4, socks5
'PROXY_ADDRESS',
'PROXY_PORT',
'PROXY_LOGIN',
'PROXY_PASSWORD',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116',
'some=cookies')
.then(result => {
console.log('result: ');
console.log(result);
})
.catch(error => console.log('test received error '+error));
Java
//git clone git@github.com:AdminAnticaptcha/anticaptcha-java.git
package com.anti_captcha;
import com.anti_captcha.Api.GeeTestProxyless;
import com.anti_captcha.Helper.DebugHelper;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.concurrent.ThreadLocalRandom;
public class Main {
public static void main(String[] args) throws InterruptedException, MalformedURLException, JSONException {
DebugHelper.setVerboseMode(true);
GeeTest api = new GeeTest();
api.setClientKey("YOUR_API_KEY_HERE");
api.setWebsiteUrl(new URL("http://biletmaster.com/"));
api.setWebsiteKey("be33de396f8d04030f6eca8fbd225071");
api.setWebsiteChallenge("grabbed_one_time_challenge_32bytes");
//optional API subdomain, make sure you understand what to set here
//api.setGeetestApiServerSubdomain("optional.subdomain.api.geetest.com");
//read the docs about this optional parameter
//api.setGeetestLib("{\"customlibs\":\"url-to-lib.js\"}");
// proxy access parameters
// DO NOT USE PURCHASED/RENTED PROXIES WITH PROXY SERVICES!!!
api.setProxyType(RecaptchaV2.ProxyTypeOption.HTTP);
api.setProxyAddress("xx.xxx.xx.xx");
api.setProxyPort(8282);
api.setProxyLogin("login");
api.setProxyPassword("password");
//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter
api.setSoftId(0);
if (!api.createTask()) {
DebugHelper.out(
"API v2 send failed. " + api.getErrorMessage(),
DebugHelper.Type.ERROR
);
} else if (!api.waitForResult()) {
DebugHelper.out("Could not solve the captcha.", DebugHelper.Type.ERROR);
} else {
DebugHelper.out("Result CHALLENGE: " + api.getTaskSolution().getChallenge(), DebugHelper.Type.SUCCESS);
DebugHelper.out("Result SECCODE: " + api.getTaskSolution().getSeccode(), DebugHelper.Type.SUCCESS);
DebugHelper.out("Result VALIDATE: " + api.getTaskSolution().getValidate(), DebugHelper.Type.SUCCESS);
}
}
}
Talep örneği (V4)
CURL
curl -i -H "Accept: application/json" \
-H "Content-Type: application/json" \
-X POST -d '{
"clientKey":"YOUR_API_KEY_HERE",
"task":
{
"type":"GeeTestTask",
"websiteURL":"http://mywebsite.com/geetest/test.php",
"gt":"874703612e5cac182812a00e273aad0d",
"version":4,
"initParameters": {
"riskType": "slide"
}
"proxyType":"http",
"proxyAddress":"8.8.8.8",
"proxyPort":8080,
"proxyLogin":"proxyLoginHere",
"proxyPassword":"proxyPasswordHere",
"userAgent":"MODERN_USER_AGENT_HERE"
},
"softId": 0
}' https://api.anti-captcha.com/createTask
PHP
<?php
//git clone git@github.com:AdminAnticaptcha/anticaptcha-php.git
include("anticaptcha.php");
include("geetest.php");
$api = new GeeTest();
$api->setVerboseMode(true);
$api->setWebsiteURL("https://www.geetest.com/en/adaptive-captcha-demo");
$api->setGTKey("fcd636b4514bf7ac4143922550b3008b");
$api->setVersion(4);
$api->setInitParameters([
"riskType": "slide"
]);
//optional API subdomain, make sure you understand what to set here
$api->setAPISubdomain("optional.subdomain.api.geetest.com");
//proxy access parameters
$api->setProxyType("http");
$api->setProxyAddress("8.8.8.8");
$api->setProxyPort(1234);
//optional login and password
$api->setProxyLogin("login");
$api->setProxyPassword("password");
//your anti-captcha.com account key
$api->setKey("YOUR_API_KEY_HERE");
//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter
$api->setSoftId(0);
//create task in API
if (!$api->createTask()) {
$api->debout("API v2 send failed - ".$api->getErrorMessage(), "red");
return false;
}
$taskId = $api->getTaskId();
//wait in a loop for max 300 seconds till task is solved
if (!$api->waitForResult(300)) {
echo "could not solve captcha\n";
echo $api->getErrorMessage()."\n";
} else {
echo "your geetest tokens:\n";
print_r($api->getTaskSolution());
}
Python
#pip3 install anticaptchaofficial
from anticaptchaofficial.geetestproxyon import *
solver = geetestProxyon()
solver.set_verbose(1)
solver.set_key("YOUR_API_KEY_HERE")
solver.set_website_url("https://address.com")
solver.set_gt_key("captchaId value")
solver.set_version(4)
# optional API subdomain, make sure you understand what to set here
# solver.set_js_api_domain("custom-domain.geetest.com")
# optional initialization parameters
# solver.set_init_parameters({"riskType": "slide"})
solver.set_proxy_address("PROXY_ADDRESS")
solver.set_proxy_port(1234)
solver.set_proxy_login("proxylogin")
solver.set_proxy_password("proxypassword")
solver.set_user_agent("Mozilla/5.0")
# Specify softId to earn 10% commission with your app.
# Get your softId here: https://anti-captcha.com/clients/tools/devcenter
solver.set_soft_id(0)
token = solver.solve_and_return_solution()
if token != 0:
print "result tokens: "
print token
else:
print "task finished with error "+solver.error_code
NodeJS
//npm install @antiadmin/anticaptchaofficial
//https://github.com/AdminAnticaptcha/anticaptcha-npm
const ac = require("@antiadmin/anticaptchaofficial");
ac.setAPIKey('YOUR_API_KEY_HERE');
//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter
ac.setSoftId(0);
ac.solveGeeTestV4ProxyOn('http://DOMAIN.COM',
'captchaId',
'API_SUBDOMAIN',
{
"riskType": "slide"
},
'http', //http, socks4, socks5
'PROXY_ADDRESS',
'PROXY_PORT',
'PROXY_LOGIN',
'PROXY_PASSWORD',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116',
'some=cookies')
.then(result => {
console.log('result: ');
console.log(result);
})
.catch(error => console.log('test received error '+error));
Java
//git clone git@github.com:AdminAnticaptcha/anticaptcha-java.git
package com.anti_captcha;
import com.anti_captcha.Api.GeeTestProxyless;
import com.anti_captcha.Helper.DebugHelper;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.concurrent.ThreadLocalRandom;
public class Main {
public static void main(String[] args) throws InterruptedException, MalformedURLException, JSONException {
DebugHelper.setVerboseMode(true);
GeeTest api = new GeeTestV4();
api.setClientKey("YOUR_API_KEY_HERE");
api.setWebsiteUrl(new URL("https://auth.geetest.com/"));
api.setWebsiteKey("b6e21f90a91a3c2d4a31fe84e10d0442");
//optional API subdomain, make sure you understand what to set here
//api.setGeetestApiServerSubdomain("optional.subdomain.api.geetest.com");
// optional initialization parameters
JSONObject additionalInitParameters = new JSONObject();
try {
additionalInitParameters.put("riskType", "ai");
} catch (Exception e) {
DebugHelper.out("JSON error: "+e.getMessage(), DebugHelper.Type.ERROR);
return;
}
api.setInitParameters(additionalInitParameters);
// proxy access parameters
// DO NOT USE PURCHASED/RENTED PROXIES WITH PROXY SERVICES!!!
api.setProxyType(RecaptchaV2.ProxyTypeOption.HTTP);
api.setProxyAddress("xx.xxx.xx.xx");
api.setProxyPort(8282);
api.setProxyLogin("login");
api.setProxyPassword("password");
//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter
api.setSoftId(0);
if (!api.createTask()) {
DebugHelper.out(
"API v2 send failed. " + api.getErrorMessage(),
DebugHelper.Type.ERROR
);
} else if (!api.waitForResult()) {
DebugHelper.out("Could not solve the captcha.", DebugHelper.Type.ERROR);
} else {
DebugHelper.out("Result captcha_id: " + api.getTaskSolution().getCaptchaId(), DebugHelper.Type.SUCCESS);
DebugHelper.out("Result lot_number: " + api.getTaskSolution().getLotNumber(), DebugHelper.Type.SUCCESS);
DebugHelper.out("Result pass_token: " + api.getTaskSolution().getPassToken(), DebugHelper.Type.SUCCESS);
DebugHelper.out("Result gen_time: " + api.getTaskSolution().getGenTime(), DebugHelper.Type.SUCCESS);
DebugHelper.out("Result captcha_output: " + api.getTaskSolution().getCaptchaOutput(), DebugHelper.Type.SUCCESS);
}
}
}
Yanıt örneği
hatasız JSON
{
"errorId": 0,
"taskId": 7654321
}
hatalı JSON
{
"errorId": 1,
"errorCode": "ERROR_KEY_DOES_NOT_EXIST",
"errorDescription": "Account authorization key not found in the system"
}
Çözümü getir
Çözümü talep etmek için getTaskResult yöntemini kullan. İlk talebi yapmadan önce çalışanlara 5 saniye gibi bir süre ver. Çalışan hala meşgulse 3 saniye içinde tekrar dene.
Görev çözüm nesnesi (V3)
Özellik | Tip | Amaç |
---|---|---|
challenge | Dize | Hedef web sitesi üzerindeki gönderme formu ile etkileşime girmek için gerekli olan hash dizesi. |
validate | Dize | Ayrıca gerekli olan hash dizesi. |
seccode | Dize | Bir diğer gerekli hash dizesi, bunlardan neden 3 tane olduğu hakkında hiçbir fikrimiz yok. |
Görev çözüm nesnesi (V4)
Özellik | Tip |
---|---|
captcha_id | Dize |
lot_number | Dize |
pass_token | Dize |
gen_time | Tam sayı |
captcha_output | Dize |
Yanıt örneği (v3)
hatasız JSON
{
"errorId":0,
"status":"ready",
"solution":
{
"challenge":"3c1c5153aa48011e92883aed820069f3hj",
"validate":"47ad5a0a6eb98a95b2bcd9e9eecc8272",
"seccode":"83fa4f2d23005fc91c3a015a1613f803|jordan"
},
"cost":"0.001500",
"ip":"46.98.54.221",
"createTime":1472205564,
"endTime":1472205570,
"solveCount":"0"
}
Token kullanım örneği

Yanıt örneği (v4)
hatasız JSON
{
"errorId":0,
"status":"ready",
"solution":
{
"captcha_id": "fcd636b4514bf7ac4143922550b3008b",
"lot_number": "354ab6dd4e594fdc903074c4d8d37b24",
"pass_token": "b645946a654e60218c7922b74b3b5ee8e8717e8fd3cd5182a5c98d660bbd1ed5",
"gen_time": "1649921519",
"captcha_output": "cFPIALDXSop8Ri2mPABbRWzNBs86N8D4vNUTuVa7wN7E...[cut]...ciM50ePCCzLBZ1bmaV9Yt7IkkFI9Emx4eaP8rRoA=="
},
"cost":"0.001500",
"ip":"46.98.54.221",
"createTime":1472205564,
"endTime":1472205570,
"solveCount":"0"
}