logo
bars

GeeTest CAPTCHA v3
ve CapMonster Cloud

CAPTCHA çözümü, siteye entegrasyon ve test.
Captcha veya başka bir koruma katmanı olan bir site devraldınız ama kaynak koda erişemiyor musunuz? O zaman hangi çözümün kurulu olduğunu, doğru ayarlanıp ayarlanmadığını ve nasıl test edileceğini bilmek istersiniz.

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 nedir
GeeTest CAPTCHA v3 nedir

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.

Background
GeeTest CAPTCHA v3 örnekleri
Intelligent mode
Intelligent mode
Kullanıcı doğrulaması, ek görevler çözdürmek yerine çoğunlukla sitedeki davranış ve etkileşimlere göre yapılır.
Slide CAPTCHA
Slide CAPTCHA
Bir bulmacayı tamamlamak veya görseldeki bir öğeyi hizalamak için hareket ettirilmesi gereken bir kaydırıcı (slider).
Icon CAPTCHA
Icon CAPTCHA
Görselleri belirtilen sıraya göre seçme.
Space CAPTCHA
Space CAPTCHA
Görsel üzerindeki bir şekli doğru konuma sürükleyip bırakma.

GeeTest CAPTCHA v3 CapMonster Cloud ile nasıl çözülür

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.

  • Form sayfasını açın ve captchanın görüntülendiğinden emin olun.
  • Çözmeden form göndermeyi deneyin — sunucu hata döndürmelidir.
  • Başarılı çözümlerden sonra form sorunsuz gönderilmelidir.

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:

Görev oluşturmaGörev oluşturma
arrow
API isteği göndermeAPI isteği gönderme
arrow
Sonucu almaSonucu alma
arrow
Token'ı sayfaya yerleştirmeToken'ı sayfaya yerleştirme
arrow
Hazır kütüphanelerle GeeTest CAPTCHA v3 çözme
CapMonster Cloud servisi, Python, JavaScript (Node.js) ve C# ile rahatça çalışmak için hazır kütüphaneler sunar.
Python
JavaScript
C#
Çözüm, token ekleme ve form gönderme
Web sayfanızda CAPTCHA çözümünün tam döngüsünü gösteren bir Node.js örneği. Olası yaklaşımlar: HTML ve CAPTCHA parametrelerini almak için HTTP istekleri kullanıp cevabı göndermek ve sonucu işlemek; veya otomasyon araçları (örneğin Playwright) ile sayfayı açmak, CAPTCHA’nın yüklenmesini beklemek, parametreleri göndermek (test için hem doğru hem hatalı veriler gönderebilirsiniz), çözümü CapMonster Cloud istemcisi üzerinden almak, token’ı forma yerleştirip sonucu görmek.
// 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();
})();
GeeTest CAPTCHA v3 sitenize nasıl entegre edilir
Sitenizde CAPTCHA’nın nasıl çalıştığını, doğrulama mantığını anlamak ve entegrasyonu yeniden bağlamak veya yeniden yapılandırmak için bu bölümü dikkatle incelemenizi öneririz. Burada korumanın kurulumu adım adım açıklanır ve tüm detayları hızlıca kavramanıza yardımcı olur.

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:

HowTo Connect image 1

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.

HowTo Connect image 2

5. Sunucu tarafını (Server SDK) yapılandırın:

Sunucu iki API ile çalışır:

  • API1 — başlatma (challenge oluşturma)
  • API2 — CAPTCHA geçildikten sonra sonucu doğrulama

<?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:

  • /register bir challenge değeri döndürüyor
  • CAPTCHA doğru şekilde görüntüleniyor
  • CAPTCHA geçildikten sonra tarayıcı konsolunda /validate isteği görünüyor
  • Sunucu "success": true döndürüyor

Failback (yedek mod)

GeeTest sunucusu kullanılamıyorsa:

  • İstemci success: false yanıtı alır
  • CAPTCHA yerel moda geçer (GeeTest Cloud bağlantısı olmadan çalışır). Bunu test etmek için bilerek geçersiz bir CAPTCHA_ID (örneğin 123456789) girmeniz yeterlidir.

Background
Olası hatalar ve hata ayıklama
Bug Icon
Geçersiz parametreler
CAPTCHA görüntülenmiyor veya invalid-gt / invalid-challenge hatası döndürülüyor. Sayfanız için güncel gt ve challenge değerlerini kullandığınızdan emin olun.
Bug Icon
Çözüm zaman aşımı
CAPTCHA çözümü zamanında alınamadı. CapMonster gibi otomatik çözüm servisleri kullanırken zaman aşımı süresini artırın.
Bug Icon
Boş alanlar
challenge, validate veya seccode sayfaya iletilmedi. Bunların formun gizli (hidden) alanlarına doğru şekilde yerleştirildiğinden emin olun.
Bug Icon
Yanıt success=false
token süresi dolmuş, yeniden kullanılmış veya sahte. Tanı koymak için isteklerin loglanmasını (kayıt altına alınmasını) etkinleştirin ve sunucunun döndürdüğü alanları kontrol edin (CapMonster veya kendi doğrulama sunucunuzla çalışırken error-codes alanları gibi).
Korumanın dayanıklılığını test etme
Entegrasyondan sonra sistemin gerçekten otomatik işlemleri engellediğinden emin olun.
Güvenlik ve optimizasyon önerileri
<b>CAPTCHA anahtarını (gizli KEY) yalnızca sunucu tarafında saklayın</b>, istemci (frontend) tarafına göndermeyin.
Doğrulama sırasında hata kodlarını (örneğin <b>error-codes</b> veya sunucu yanıtındaki ilgili alanları) loglayın, böylece başarısız kontrollerin nedenlerini anlayabilirsiniz.
Lisans veya iç politika gerektiriyorsa formun altına <b>Gizlilik Politikası</b> ve <b>GeeTest Kullanım Şartları</b> bağlantılarını ekleyin.
Sonuç

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.

Conclusion