Bu makalede tüm önemli sorulara cevap vermeye çalıştık. Bir problemi çözmeye başlamanın ilk adımı, hangi koruma sisteminin kullanıldığını belirlemektir. Bunun için, görsel örneklerin ve neyle karşı karşıya olduğunuzu hızlıca anlamanıza yardımcı olabilecek temel işaretlerin yer aldığı popüler captcha ve anti-bot koruma sistemleri listesine başvurabilirsiniz.
Sitenizde GeeTest CAPTCHA v3 kullanıldığını fark ederseniz, bir sonraki adım özelliklerini ve çalışma şeklini daha ayrıntılı incelemek olacaktır. Yine bu makalede, GeeTest CAPTCHA v3 sisteminin entegrasyonuna ilişkin kılavuzu da bulabilir ve böylece sitenizde nasıl çalıştığını tamamen anlayabilirsiniz. Bu da yalnızca mevcut korumayı anlamanıza değil, aynı zamanda bakımını doğru şekilde planlamanıza da yardımcı olur.
GeeTest CAPTCHA v3, web sitelerini kaynağa zarar verebilecek otomatik işlemlerden koruyan bir güvenlik sistemidir. Gerçek kullanıcılarla botları ayırt etmeye yardımcı olur, böylece sitenin güvenli ve stabil çalışmasını sağlar.
GeeTest CAPTCHA v3 içeren formları test ederken, captchanın düzgün çalıştığını ve doğru entegre edildiğini doğrulamanız gerekir.
Sitenize yerleştirilen captchayı manuel olarak test edebilirsiniz.
Otomatik çözüm için CapMonster Cloud gibi araçlar kullanabilirsiniz. Captcha parametrelerini alır, kendi sunucularında işler ve hazır bir token döndürür. Bu tokenı forma ekleyerek kullanıcı müdahalesi olmadan doğrulamayı geçebilirsiniz.
CapMonster Cloud API ile çalışma genellikle şu adımlardan oluşur:
GeeTest CAPTCHA v3 çözme isteğinde aşağıdaki parametrelerin belirtilmesi gerekir:
type - GeeTestTask;
websiteURL - kullanıcının CAPTCHA’yı geçtiği sayfanın adresi. Doğru URL, https://api-na.geetest.com/gettype.php isteği yapılırken Referer başlığında gönderilir.;
gt - etki alanı (domain) için GeeTest gt tanımlama anahtarı;
challenge - her görevden önce yeni bir challenge değeri döndüren bir istek gönderilmelidir; aksi hâlde süresi dolmuş bir jeton (token) ERROR_TOKEN_EXPIRED hatasına yol açar;
geetestApiServerSubdomain - Geetest API sunucusunun alt alan adı (api.geetest.com’dan farklı olmalıdır).
https://api.capmonster.cloud/createTask{
"clientKey":"YOUR_CAPMONSTER_CLOUD_API_KEY",
"task":
{
"type":"GeeTestTask",
"websiteURL":"https://www.example.com",
"gt":"022397c99c9f646f6477822485f30404",
"challenge":"7f044f48bc951ecfbfc03842b5e1fe59",
"geetestApiServerSubdomain":"api-na.geetest.com"
}
}{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}{
"errorId":0,
"status":"ready",
"solution": {
"challenge":"0f759dd1ea6c4wc76cedc2991039ca4f23",
"validate":"6275e26419211d1f526e674d97110e15",
"seccode":"510cd9735583edcb158601067195a5eb|jordan"
}
}// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium
import { chromium } from 'playwright';
import { CapMonsterCloudClientFactory, ClientOptions, GeeTestRequest } from '@zennolab_com/capmonstercloud-client';
const API_KEY = 'your_capmonster_cloud_api_key';
const DEMO_PAGE = 'https://example.com';
(async () => {
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
console.log('Sayfa açılıyor...');
await page.goto(DEMO_PAGE, { waitUntil: 'networkidle' });
console.log('CAPTCHA parametreleri alınıyor...');
const init = await page.evaluate(async () => {
// GeeTest için init-params değerlerini almak üzere sunucuya istek gönderiyoruz, bunu kendi uç noktanızla (endpoint) değiştirin
const r = await fetch(`/api/v1/example/gee-test/init-params?t=${Date.now()}`);
return r.json();
});
console.log('Init params:', init);
console.log('CapMonster Cloud için görev (task) oluşturuyoruz...');
const cmc = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));
const solRaw = await cmc.Solve(new GeeTestRequest({ websiteURL: DEMO_PAGE, gt: init.gt, challenge: init.challenge }));
const sol = solRaw.solution || solRaw;
console.log('CAPTCHA çözümü:', sol);
console.log('Çözümü gizli alanlara yerleştiriyoruz...');
await page.evaluate(s => {
['challenge','validate','seccode'].forEach(n => {
const el = document.querySelector(`input[name="geetest_${n}"]`);
if(el) el.value = s[n];
});
}, sol);
await page.click('button[data-action="test_action"]'); // bunu kendi değeriyle değiştirin
console.log('Sunucuya doğrulama (verify) isteği gönderiyoruz...');
const result = await page.evaluate(async () => {
const payload = {
geetest_challenge: document.querySelector('input[name="geetest_challenge"]')?.value,
geetest_validate: document.querySelector('input[name="geetest_validate"]')?.value,
geetest_seccode: document.querySelector('input[name="geetest_seccode"]')?.value
};
// bunu kendi değeriyle değiştirin
const r = await fetch('/api/v1/example/gee-test/verify', {
method:'POST',
headers:{'Content-Type':'application/json'},
body: JSON.stringify(payload)
});
return r.json();
});
console.log('CAPTCHA doğrulama sonucu:', result);
await page.waitForTimeout(3000);
await browser.close();
})();1. GeeTest hesabınıza kayıt olun veya giriş yapın.
2. Captcha Dashboard bölümüne gidin ve CAPTCHA v3 seçeneğini seçin:

3. Yeni bir CAPTCHA oluşturmak için +New Captcha düğmesine tıklayın. CAPTCHA adı (örneğin ürün veya proje adı), CAPTCHA’nın entegre edileceği sitenin URL’si ve CAPTCHA kullanım bağlamını (örneğin Giriş / Kayıt / Şifre sıfırlama vb.) belirtin.
4. Size benzersiz bir CAPTCHA ID ve KEY verilecektir. Bunlar güvenlik panelinden yapılandırılabilir.

5. Sunucu tarafını (Server SDK) yapılandırın:
Sunucu iki API ile çalışır:
<?php
header('Content-Type: application/json');
const CAPTCHA_ID = '07df3141a35**********19a473d7c50';
const CAPTCHA_KEY = '543b19036ef********8e07d121b81e9';
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
function getJson($url) {
$res = @file_get_contents($url);
return $res ? json_decode($res, true) : null;
}
// API1: başlatma (init)
if ($path === '/register') {
$data = getJson("https://api.geetest.com/register.php?gt=" . CAPTCHA_ID . "&json_format=1");
echo json_encode($data ? [
'gt' => CAPTCHA_ID,
'challenge' => $data['challenge'],
'success' => $data['success'] === 1,
'new_captcha' => true
] : ['success' => 0]);
exit;
}
// API2: doğrulama
if ($path === '/validate' && $_SERVER['REQUEST_METHOD'] === 'POST') {
$req = json_decode(file_get_contents('php://input'), true);
$data = getJson("https://api.geetest.com/validate.php?" . http_build_query([
'seccode' => $req['geetest_seccode'] ?? '',
'challenge' => $req['geetest_challenge'] ?? '',
'gt' => CAPTCHA_ID,
'json_format' => 1
]));
echo json_encode(['success' => !empty($data['seccode'])]);
exit;
}
http_response_code(404);
echo json_encode(['error' => 'Not found']);
6. İstemci tarafını (Client SDK) bağlayın:
İstemci tarafında gt.js dosyasını yüklersiniz ve sunucudan (API1) aldığınız parametreleri ileterek initGeetest fonksiyonunu çağırırsınız. Aşağıda ajax ile bir örnek verilmiştir:
ajax({
url: "https://example.com/register",
type: "get",
dataType: "json",
success: function (data) {
initGeetest({
gt: data.gt,
challenge: data.challenge,
offline: !data.success,
new_captcha: true
}, function (captchaObj) {
captchaObj.appendTo("#captcha");
captchaObj.onSuccess(function () {
const result = captchaObj.getValidate();
ajax({
url: "https://example.com/validate",
type: "post",
contentType: "application/json",
data: JSON.stringify(result),
success: function(res) {
if (res.success) alert('CAPTCHA passed');
else alert('CAPTCHA failed');
}
});
});
});
}
});
Çalışmayı kontrol etme
Aşağıdakilerden emin olun:
Failback (yedek mod)
GeeTest sunucusu kullanılamıyorsa:
Kodu üzerinde erişiminiz olmayan, ancak üzerinde zaten bir captcha veya başka bir koruma sistemi kurulmuş bir site devraldıysanız, sorun değil! Hangi teknolojinin kullanıldığını tespit etmek oldukça kolaydır. Çalışmanın düzgün olup olmadığını kontrol etmek için ise, izole bir test ortamında CapMonster Cloud tanıma servisinden yararlanarak, jeton işleme mekanizmasının ve doğrulama mantığının doğru şekilde çalıştığından emin olabilirsiniz.
GeeTest CAPTCHA v3 söz konusu olduğunda, sistemi tanımlamak, davranışını incelemek ve korumanın düzgün çalıştığını doğrulamak yeterlidir. Bu yazıda, GeeTest CAPTCHA v3 nasıl tespit edilir ve entegrasyonu ya da yeniden yapılandırılması için talimatların nerede bulunabileceği gösterdik; böylece korumayı güvenle sürdürebilir ve çalışmasını kontrol altında tutabilirsiniz.