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 v4 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 v4 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 v4 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 v4 çözme isteğinde aşağıdaki parametrelerin belirtilmesi gerekir:
type - GeeTestTask;
websiteURL - captchanın çözüldüğü sayfanın adresi;
gt - alan adı için GeeTest tanımlama anahtarı — captcha_id parametresi;
version - 4;
geetestApiServerSubdomain - GeeTest API sunucusunun alt alan adı (api.geetest.com’dan farklı olmalıdır);
geetestGetLib - captchanın sayfada görüntülenmesi için kullanılan scriptin yolu. Bazı sitelerde gerekli olabilir;
initParameters - 4. sürüm için ek parametreler; “riskType” (captchanın türü / kontrol özellikleri) ile birlikte kullanılır.
https://api.capmonster.cloud/createTask{
"clientKey": "YOUR_CAPMONSTER_CLOUD_API_KEY",
"task": {
"type": "GeeTestTask",
"websiteURL": "https://gt4.geetest.com/",
"gt": "54088bb07d2df3c46b79f80300b0abbe",
"version": 4,
"initParameters": {
"riskType": "slide"
}
}
}{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}{
"errorId": 0,
"status": "ready",
"solution": {
"captcha_id": "f5c2ad5a8a3cf37192d8b9c039950f79",
"lot_number": "bcb2c6ce2f8e4e9da74f2c1fa63bd713",
"pass_token": "edc7a17716535a5ae624ef4707cb6e7e478dc557608b068d202682c8297695cf",
"gen_time": "1683794919",
"captcha_output": "XwmTZEJCJEnRIJBlvtEAZ662T...[cut]...SQ3fX-MyoYOVDMDXWSRQig56"
}
}
// npm install playwright @zennolab_com/capmonstercloud-client
import { chromium } from "playwright";
import {
CapMonsterCloudClientFactory,
ClientOptions,
GeeTestRequest
} from "@zennolab_com/capmonstercloud-client";
const CAPMONSTER_API_KEY = "YOUR_CAPMONSTER_API_KEY";
async function solveGeetestV4(pageUrl) {
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext({ viewport: null });
const page = await context.newPage();
let detected = null;
let solutionObj = null;
// 1. /load yanıtını yakalayın (captcha_id, challenge vb. değerleri tespit edin)
page.on("response", async (response) => {
const url = response.url();
if (!url.startsWith("https://gcaptcha4.geetest.com/load?")) return;
const params = new URLSearchParams(url.split("?")[1] || "");
const captchaId = params.get("captcha_id");
const challenge = params.get("challenge");
const captchaType = params.get("captcha_type");
if (captchaId && challenge) {
detected = { captchaId, challenge, captchaType };
console.log("Detected GeeTest v4 load:", detected);
}
});
// 2. Sayfayı yükleyin
console.log("Opening page:", pageUrl);
await page.goto(pageUrl, { waitUntil: "domcontentloaded" });
// 3. /load isteğini yakalayana kadar bekleyin
console.log("Waiting for GeeTest /load...");
while (!detected) {
await page.waitForTimeout(500);
}
// 4. Görevi (task) CapMonster Cloud’a gönderin
console.log("Sending task to CapMonster...");
const cmc = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: CAPMONSTER_API_KEY })
);
const task = new GeeTestRequest({
websiteURL: pageUrl,
gt: detected.captchaId,
challenge: detected.challenge,
version: "4",
initParameters: {
riskType: detected.captchaType || "slide"
}
});
const solveRes = await cmc.Solve(task);
const sol = solveRes.solution || solveRes;
solutionObj = {
captcha_id: sol.captcha_id || detected.captchaId,
captcha_output: sol.captcha_output,
lot_number: sol.lot_number,
pass_token: sol.pass_token
};
console.log("Got solution from CapMonster:", solutionObj);
// 5. Başarılı yanıt almak için /verify isteğine kendi değerlerinizi ekleyin
await page.route("https://gcaptcha4.geetest.com/verify*", async (route) => {
console.log("Intercepted /verify, injecting fake success...");
const body = `geetest_${Date.now()}(${JSON.stringify({
status: "success",
data: {
result: "success",
seccode: {
captcha_id: solutionObj.captcha_id,
captcha_output: solutionObj.captcha_output,
lot_number: solutionObj.lot_number,
pass_token: solutionObj.pass_token
}
}
})})`;
await route.fulfill({
status: 200,
contentType: "application/javascript",
body
});
});
// 6. Kullanıcı eylemini taklit edin (örneğin captcha butonuna tıklamak)
console.log("Waiting for captcha interaction...");
await page.waitForTimeout(3000);
// Doğrulama çağrısı örneği:
try {
await page.click('.geetest_btn'); // captcha butonu
console.log("Clicked captcha button");
} catch {
console.log("Captcha button not found");
}
// Bazen verify() fonksiyonunu manuel olarak çağırmak gerekir:
await page.evaluate(() => {
if (window.initGeetest4 && typeof verify === "function") {
verify();
}
});
console.log("Waiting for verification request...");
await page.waitForTimeout(3000);
await browser.close();
return { detected, solution: solutionObj };
}
(async () => {
const url = "https://example.com"; // GeeTest v4 bulunan sayfanın adresi ile değiştirin
const res = await solveGeetestV4(url);
console.log("FINISHED:", res);
})();
1. GeeTest hesabınıza kaydolun veya giriş yapın
2. Captcha Dashboard bölümüne gidin ve Behavior Verification v4 seçeneğini seçin:

3. Kontrol panelinde + Create application düğmesine tıklayın
4. APP/website name alanına captchayı kullanacağınız site veya uygulamanın adını, Address alanına captchanın kurulacağı ana alan adını (örneğin https://example.com), Industry alanına ise sitenin kategorisini (örneğin “E-commerce”, “Social Media” vb.) girin ve Confirm düğmesine tıklayın.
5. Yeni oluşturduğunuz uygulamanın yanında yer alan Add events düğmesine tıklayın. Event alanında captchayı kullanacağınız belirli senaryonun adını (örneğin login, register vb.), Device alanında platformu (örneğin Web/Wap), Business types alanında ise captchanın kullanılacağı iş senaryosu türünü (örneğin Sign-up / Sign-in — kayıt / giriş) seçin. Ardından Add düğmesine tıklayın.
6. Artık panelinizde oluşturulan captchaya ait ID (istemci ve sunucu tarafında kullanılır) ve Key (sunucuda doğrulama için kullanılır) değerleri görünecektir:

7. İstemci tarafını entegre edin
Script’i ekleyin:
<script src="https://static.geetest.com/v4/gt4.js"></script>CAPTCHA’yı başlatın (initialize):
initGeetest4(
{ captchaId: "Your CaptchaId" },
function (captcha) {
captcha.appendTo("#captcha"); // Sayfadaki bir elemana yerleştiriyoruz
}
);Önemli:
<!-- CAPTCHA script’ini dahil ediyoruz -->
<script src="https://static.geetest.com/v4/gt4.js"></script>
</head>
<body>
<h1>CAPTCHA Demo</h1>
<!-- CAPTCHA için konteyner (container) elemanı -->
<div id="captcha"></div>
<script>
// CAPTCHA’nın başlatılması
initGeetest4(
{
captchaId: "YOUR_CAPTCHA_ID" // Kendi CaptchaId’nizle değiştirin
},
function (captcha) {
// CAPTCHA’yı sayfadaki ilgili elemana yerleştiriyoruz
captcha.appendTo("#captcha");
// Başarılı doğrulama burada işlenebilir
captcha.onSuccess(function() {
const validate = captcha.getValidate();
console.log("CAPTCHA passed!", validate);
// Burada validate isteğini sunucuya göndererek doğrulama yapabilirsiniz
});
}
);
</script>
8. Sunucu tarafını yapılandırın.
Kullanıcı, ön yüzde (frontend) CAPTCHA’yı geçtiğinde bir dizi parametre üretilir. Bu parametrelerin arka uca (backend) gönderilmesi ve ardından GeeTest’in ikincil doğrulama API’si üzerinden kontrol edilmesi gerekir; böylece doğrulamanın gerçekten başarılı olduğunu onaylayabilirsiniz.
İkincil doğrulama API’si:
http://gcaptcha4.geetest.com/validateİstek için temel parametreler
{
"status": "success",
"result": "success",
"reason": "",
"captcha_args": {
"used_type": "slide",
"user_ip": "127.0.0.1",
"lot_number": "4dc3cfc2cdff448cad8d13107198d473",
"scene": "anti crawler",
"referer": "http://127.0.0.1:8077/"
}
}<?php
$captcha_id = 'YOUR_CAPTCHA_ID';
$captcha_key = 'YOUR_CAPTCHA_KEY';
$api_server = 'http://gcaptcha4.geetest.com';
// Parametreleri frontend’den alıyoruz
$lot_number = $_POST['lot_number'] ?? '';
$captcha_output = $_POST['captcha_output'] ?? '';
$pass_token = $_POST['pass_token'] ?? '';
$gen_time = $_POST['gen_time'] ?? '';
// İmzayı (sign_token) oluşturuyoruz
$sign_token = hash_hmac('sha256', $lot_number, $captcha_key);
// İstek verilerini hazırlıyoruz
$data = [
'lot_number' => $lot_number,
'captcha_output' => $captcha_output,
'pass_token' => $pass_token,
'gen_time' => $gen_time,
'sign_token' => $sign_token
];
// İkincil doğrulama API’sine istek gönderiyoruz
$url = $api_server . '/validate?captcha_id=' . $captcha_id;
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
'timeout' => 5
]
];
$context = stream_context_create($options);
$result = @file_get_contents($url, false, $context);
if ($result === FALSE) {
$response = ['login' => 'fail', 'reason' => 'request geetest api fail'];
} else {
$gt_msg = json_decode($result, true);
if ($gt_msg['result'] === 'success') {
$response = ['login' => 'success', 'reason' => $gt_msg['reason']];
} else {
$response = ['login' => 'fail', 'reason' => $gt_msg['reason']];
}
}
echo json_encode($response);
?>
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 v4 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 v4 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.