Cloudflare Turnstile çözümünün fiyatlandırması
| CAPTCHA | Fiyat (USD) |
|---|---|
$ 1.30 1000 jeton |
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 Cloudflare Turnstile kullanıldığını fark ederseniz, bir sonraki adım özelliklerini ve çalışma şeklini daha ayrıntılı incelemek olacaktır. Yine bu makalede, Cloudflare Turnstile 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.
CapMonster Cloud aracılığıyla Cloudflare Turnstile nasıl çözülür
Cloudflare Turnstile 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:
Cloudflare Turnstile'ı çözmek için istekte aşağıdaki parametrelerin belirtilmesi gerekir:
type - TurnstileTask;
websiteURL - CAPTCHA'nın çözüldüğü sayfanın adresi;
websiteKey - Turnstile anahtarı.
https://api.capmonster.cloud/createTask{
"clientKey": "API_KEY",
"task": {
"type": "TurnstileTask",
"websiteURL": "http://tsmanaged.zlsupport.com",
"websiteKey": "0x4AAAAAAABUYP0XeMJF0xoy"
}
}{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}{
"errorId": 0,
"status": "ready",
"solution": {
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36",
"token": "0.iGX3xsyFCkbGePM3jP4P4khLo6TrLukt8ZzBvwuQOvbC...f61f3082"
}
}// npm install playwright @zennolab_com/capmonstercloud-client
import { chromium } from "playwright";
import { CapMonsterCloudClientFactory, ClientOptions, TurnstileRequest } from "@zennolab_com/capmonstercloud-client";
async function main() {
// 1. CapMonster Cloud aracılığıyla Turnstile çözümü
const cmcClient = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: 'YOUR_CAPMONSTER_API_KEY' })
);
const turnstileRequest = new TurnstileRequest({
websiteURL: 'http://tsmanaged.zlsupport.com',
websiteKey: '0x4AAAAAAABUYP0XeMJF0xoy',
});
const result = await cmcClient.Solve(turnstileRequest);
const token = result.solution.token;
console.log('Turnstile token'ı alındı:', token);
// 2. Playwright başlatılıyor
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('http://tsmanaged.zlsupport.com');
// 3. Giriş ve şifre doldurma
await page.fill('#username', 'your_username');
await page.fill('#password', 'your_password');
// 4. Gizli token alanının görünmesini bekleme
await page.waitForSelector('#token', { state: 'attached', timeout: 60000 });
// 5. Token ekleme ve alanı görünür hale getirme
await page.evaluate((t) => {
const tokenInput = document.querySelector('#token');
if (tokenInput) {
tokenInput.type = 'text'; // alanı görünür hale getir
tokenInput.value = t; // token ekle
console.log('Token, token alanına eklendi');
} else {
console.error('#token alanı bulunamadı');
}
}, token);
// 6. Token'ın gerçekten eklendiğini doğrulama
const checkValue = await page.$eval('#token', el => el.value);
console.log('Token değerinin kontrolü:', checkValue);
// 7. Form gönderme
await page.click('button[type="submit"]');
console.log('Form Turnstile token'ıyla gönderildi');
// await browser.close();
}
main().catch(err => console.error(err));1. Cloudflare Turnstile sayfasına gidin, Şimdi Başlayın'a tıklayın.
2. Hizmete kaydolun.
3. Turnstile Widgets'ta mavi Add Widget düğmesine tıklayın.

4. Cloudflare Turnstile'ı yapılandırın, belirtin:
- Widget name—CAPTCHA'nın adı (kolaylık için, örneğin Login form).
- Hostname Management—CAPTCHA'nın çalışacağı domainler (örneğin, example.com).
- Widget Mode:
- Managed—optimal seçenek, CAPTCHA onay kutusunu gösterip göstermeyeceğine kendisi karar verir.
- Non-interactive—doğrulama tıklama olmadan otomatik olarak gerçekleştirilir.
- Invisible—tamamen görünmez.
- Pre-clearance—site Cloudflare Proxy üzerinden geçiyorsa Yes olarak ayarlayın (CAPTCHA'yı tekrarlamamak için).
5. Widget'ı oluşturduktan sonra iki anahtar alacaksınız—Site Key ve Secret Key.

6. İstemci tarafını bağlayın
1) Turnstile betiğini bağlayın
Otomatik oluşturma (widget sayfa yüklenirken otomatik olarak oluşturulur):
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>Programatik kontrol (widget'ı JavaScript aracılığıyla kendiniz oluşturursunuz):
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit" defer></script>Önemli: betik tam URL'den yüklenmelidir. Proxy veya önbellek hatalara neden olabilir.
2) Widget için bir konteyner oluşturun
Otomatik:
<div class="cf-turnstile" data-sitekey="<YOUR_SITEKEY>"></div>Programatik olarak:
<div id="turnstile-container"></div>3) Widget yapılandırması
Data öznitelikleri aracılığıyla:
<div class="cf-turnstile"
data-sitekey="<YOUR_SITEKEY>"
data-theme="light"
data-size="normal"
data-callback="onSuccess">
</div>JavaScript aracılığıyla:
const widgetId = turnstile.render("#turnstile-container", {
sitekey: "<YOUR_SITEKEY>",
theme: "light",
size: "normal",
callback: token => console.log("Token:", token)
});4) Token'larla çalışma
const token = turnstile.getResponse(widgetId); // token al
const isExpired = turnstile.isExpired(widgetId); // süre sonunu kontrol et
turnstile.reset(widgetId); // sıfırla
turnstile.remove(widgetId); // kaldır
turnstile.execute("#turnstile-container"); // manuel yürütme
5) Formla entegrasyon
<form id="my-form" method="POST">
<input type="hidden" name="cf-turnstile-response" id="cf-turnstile-response">
<button type="submit">Gönder</button>
</form>
<script>
function onSuccess(token) {
document.getElementById("cf-turnstile-response").value = token;
}
</script>
<title>Turnstile Example</title>
<!-- Turnstile betiğini bağla -->
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
</head>
<body>
<h1>Turnstile ile form örneği</h1>
<form id="my-form">
<label for="username">İsim:</label>
<input type="text" name="username" id="username" required>
<!-- Turnstile için konteyner -->
<div class="cf-turnstile" data-sitekey="<YOUR_SITEKEY>" data-callback="onTurnstileSuccess"></div>
<button type="submit">Gönder</button>
</form>
<script>
// CAPTCHA'dan geçtikten sonra çağrılan callback
function onTurnstileSuccess(token) {
console.log("Turnstile token'ı alındı:", token);
// Token'ı gizli form alanına kaydet (isteğe bağlı)
document.getElementById("cf-turnstile-token")?.remove();
const input = document.createElement("input");
input.type = "hidden";
input.name = "cf-turnstile-response";
input.id = "cf-turnstile-token";
input.value = token;
document.getElementById("my-form").appendChild(input);
}
// Form gönderimi
document.getElementById("my-form").addEventListener("submit", async (e) => {
e.preventDefault();
const formData = new FormData(e.target);
const response = await fetch("/submit-form", {
method: "POST",
body: formData
});
const result = await response.json();
if(result.success){
alert("Form başarıyla gönderildi ve token doğrulandı!");
} else {
alert("Turnstile token doğrulama hatası. Lütfen tekrar deneyin.");
// Kullanıcının CAPTCHA'yı tekrar tamamlayabilmesi için widget'ı sıfırla
turnstile.reset();
}
});
</script>
</body>
</html>
6) Sunucu tarafını yapılandırın
Sunucu tarafı doğrulama süreci:
- İstemci: kullanıcı sayfada Turnstile'ı tamamlar → token oluşturulur.
- Form gönderilir: token form verileriyle birlikte sunucuya gönderilir.
- Sunucu: token ve gizli anahtarla Cloudflare Siteverify API'sine POST isteği yapar.
- Cloudflare: sonuçla (success: true/false) ve ek bilgilerle (action, hostname, tamamlanma süresi) JSON döndürür.
- Sunucu: kullanıcı eyleminin izin verilip verilmeyeceğine veya reddedileceğine karar verir.
Siteverify API:
https://challenges.cloudflare.com/turnstile/v0/siteverifyİstek parametreleri:
- secret (zorunlu): Cloudflare panelinden gizli Turnstile anahtarı
- response (zorunlu): istemcide alınan token
- remoteip (isteğe bağlı): kullanıcının IP adresi (önerilir)
- idempotency_key (isteğe bağlı): tekrarlanan doğrulamalara karşı koruma için benzersiz UUID
Token özellikleri:
- Maksimum uzunluk: 2048 karakter
- 5 dakika geçerli
- Tek kullanımlık
- Süresi dolduğunda veya yeniden doğrulandığında, API timeout-or-duplicate hatası döndürür
<?php
function validateTurnstile($token, $secret, $remoteip = null) {
$url = 'https://challenges.cloudflare.com/turnstile/v0/siteverify';
$data = ['secret' => $secret, 'response' => $token];
if ($remoteip) $data['remoteip'] = $remoteip;
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded
",
'method' => 'POST',
'content' => http_build_query($data)
]
];
$response = file_get_contents($url, false, stream_context_create($options));
if ($response === FALSE) {
return ['success' => false, 'error-codes' => ['internal-error']];
}
return json_decode($response, true);
}
// Kullanım
$secret_key = 'YOUR_SECRET_KEY';
$token = $_POST['cf-turnstile-response'] ?? '';
$remoteip = $_SERVER['REMOTE_ADDR'];
$result = validateTurnstile($token, $secret_key, $remoteip);
if($result['success']){
echo "Form başarıyla gönderildi!";
} else {
echo "Doğrulama hatası: " . implode(', ', $result['error-codes']);
}
?>
Desteklenen captchas
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.
Cloudflare Turnstile 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, Cloudflare Turnstile 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.