Cloudflare Turnstile
ve CapMonster Cloud

CAPTCHA çözümü, web sitesine kurulum ve test.

Cloudflare Turnstile çözümünün fiyatlandırması

CAPTCHA
Fiyat (USD)
$ 1.30
1000 jeton
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 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.

Cloudflare Turnstile nedir
Cloudflare Turnstile nedir
Cloudflare Turnstile, web sitelerini otomatik eylemlerden koruyan Cloudflare'in modern bir CAPTCHA'sıdır. Web sitesi ziyaretçileri için doğrulama neredeyse görünmezdir, görevleri tamamlamaya gerek yoktur: genellikle onay kutusuna tek bir tıklama yeterlidir, bundan sonra sistem ziyaretçinin geçmesine izin verilip verilmeyeceğine veya bot şüphesinde engellenip engellenmeyeceğine karar verir. Cloudflare Challenge'ın aksine, Turnstile CAPTCHA'sı ayrı bir pencerede değil, doğrudan web sitesinde yerleştirilir—genellikle giriş veya kayıt formlarında.

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:

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üphaneler kullanılarak Cloudflare Turnstile tanıma
CapMonster Cloud hizmeti, Python, JavaScript (Node.js) ve C# dillerinde rahat çalışma için hazır kütüphaneler sağlar.
Python
JavaScript
C#
Çözüm, token ekleme ve form gönderimi
Web sayfanızda CAPTCHA tanımanın tam döngüsü için Node.js'de örnek. Olası yaklaşımlar: HTML ve CAPTCHA parametrelerini almak için HTTP isteklerini kullanın, yanıtı gönderin ve sonucu işleyin; veya otomasyon araçlarıyla (örneğin, Playwright)—sayfayı açın, CAPTCHA'yı bekleyin, parametreleri gönderin (test için hem doğru hem de yanlış veriler gönderebilirsiniz), CapMonster Cloud istemcisi aracılığıyla çözümü alın, token'ı forma ekleyin ve sonucu görün.
python
// 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));
Cloudflare Turnstile web sitenize nasıl bağlanır
Web sitenizde CAPTCHA'nın çalışmasında güvenle gezinmek, doğrulama mantığını anlamak, yeniden bağlamak veya yeniden yapılandırmak için bu bölümü incelemenizi öneririz. Koruma bağlantı sürecini açıklar—bu, tüm nüansları hızlıca anlamanıza yardımcı olacaktır.

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.

HowTo Connect image 1

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.

HowTo Connect image 2

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

markup
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>

Programatik kontrol (widget'ı JavaScript aracılığıyla kendiniz oluşturursunuz):

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

markup
<div class="cf-turnstile" data-sitekey="<YOUR_SITEKEY>"></div>

Programatik olarak:

markup
<div id="turnstile-container"></div>

3) Widget yapılandırması

Data öznitelikleri aracılığıyla:

markup
<div class="cf-turnstile"
            data-sitekey="<YOUR_SITEKEY>"
            data-theme="light"
            data-size="normal"
            data-callback="onSuccess">
          </div>

JavaScript aracılığıyla:

javascript
const widgetId = turnstile.render("#turnstile-container", {
  sitekey: "<YOUR_SITEKEY>",
  theme: "light",
  size: "normal",
  callback: token => console.log("Token:", token)
});

4) Token'larla çalışma

javascript
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

markup
<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>

Kod örneğiKod örneği
arrow

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:

javascript
POST
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'de doğrulama örneğiPHP'de doğrulama örneği
arrow

Background
Olası hatalar ve hata ayıklama
Bug Icon
Yanlış parametreler
CAPTCHA görüntülenmiyor veya invalid-input-secret, missing-input-response, invalid-input-response gibi hatalar veriyor. sitekey ve secret key'in geçerliliğini ve Cloudflare Dashboard'daki ayarları kontrol edin.
Bug Icon
Çözüm zaman aşımı
Token'ın süresi doldu (300 saniye geçerli) veya zamanında alınamadı. Kararlı bağlantı ve doğru API entegrasyonu sağlayın.
Bug Icon
Boş veya yanlış token
cf-turnstile-response parametresi eksik veya yanlış. Token'ın forma ve sunucuya aktarımını kontrol edin.
Bug Icon
Yanıt success=false
Token geçersiz, süresi dolmuş veya zaten kullanılmış. Her token yalnızca bir kez doğrulanabilir. Analiz için Siteverify istek ve yanıtlarının günlüğe kaydedilmesini etkinleştirin.
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
Token'ları yalnızca sunucuda doğrulayın, asla frontend'den Siteverify API'sini çağırmayın—bu gizli anahtarınızı açığa çıkaracaktır.
Kodda anahtar depolamak yerine ortam değişkenlerini veya gizli yönetim sistemini kullanın.
İsteğin web sitenizden geldiğinden emin olmak için ek alanları (<span class="font-bold">hostname</span>, <span class="font-bold">action</span>) kontrol edin.
HTTPS kullanın—Siteverify'a yapılan tüm çağrılar güvenli bir bağlantı üzerinden yapılmalıdır.
Hata işleme uygulayın—API kullanılamadığında, dahili verileri ifşa etmeden kullanıcıya net bir mesaj gösterin.
Sitekey kullanımını domainlere göre kısıtlayın.
Kuruluşunuz veya gizlilik politikanız gerektiriyorsa forma <span class="font-bold">Gizlilik Politikası</span> ve <span class="font-bold">Cloudflare Hizmet Koşulları</span> bağlantıları 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.

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.

Conclusion

Cloudflare Turnstile hakkında sık sorulan sorular

CapMonster Cloud ile Cloudflare Turnstile'ı çözmek için:

Aşağıdaki JSON parametreleriyle https://api.capmonster.cloud/createTask adresine bir POST isteği gönderin:

json
{
  "clientKey": "API_KEY",
  "task": {
    "type": "TurnstileTask",
    "websiteURL": "[page_URL_with_Turnstile]",
    "websiteKey": "[Turnstile_website_key]"
  }
}
  • clientKey: CapMonster Cloud API anahtarınız
  • task.type: TurnstileTask
  • task.websiteURL: Captcha'nın çözüldüğü sayfanın URL'si
  • task.websiteKey: Turnstile site key. Nasıl bulacağınızı görün.

API bir taskId döndürür.

Yanıt durumu ready olana kadar clientKey ve taskId ile https://api.capmonster.cloud/getTaskResult adresini yoklayın.

Görev çözüldüğünde yanıt bir token ve eşleşen userAgent içerir.

Her iki değeri de formu gönderecek aynı tarayıcı oturumuna aktarın.

Ayrıntılar ve örnekler için Turnstile görev dokümantasyonuna bakın.

Cloudflare Turnstile üç widget modunu destekler:

  • Managed: Turnstile, riske göre etkileşimli bir kontrol göstermeye veya ziyaretçiyi sessizce geçirmeye karar verir.
  • Non-interactive: Kullanıcı etkileşimi olmadan çalışır ancak kontroller sırasında görünür bir widget gösterir.
  • Invisible: Yine kullanıcı etkileşimi olmadan çalışır, ancak widget ziyaretçiye gösterilmez.

Backend'iniz istemciden Turnstile token'ını aldığında:

Şu parametrelerle https://challenges.cloudflare.com/turnstile/v0/siteverify adresine POST ile gönderin:

  • secret: Cloudflare panelindeki widget'ın gizli anahtarı
  • response: İstemci tarafı widget'ından gelen token
  • remoteip (isteğe bağlı): Ziyaretçinin IP adresi
  • idempotency_key (isteğe bağlı): Doğrulamayı güvenle yeniden denemek için oluşturduğunuz UUID

Uç nokta hem application/x-www-form-urlencoded hem de application/json kabul eder.

Token doğrulamayı başarıyla geçtiyse Cloudflare success: true döndürür.

Formu göndermeden önce token'ı [name="cf-turnstile-response"] alanına enjekte etmek için page.evaluate() veya başka bir DOM düzeyinde yöntem kullanın.

Bazı entegrasyonların callback'lere veya özel JavaScript işleyicilerine de dayandığını unutmayın. Bu durumda widget'ın JS callback fonksiyonunu (data-callback içinde tanımlı) çağırın ve alınan token'ı sunucu doğrulamasına aktarın.

Turnstile siteverify'den gelen timeout-or-duplicate hatası genellikle token'ın doğrulamadan önce süresinin dolduğu veya birden fazla kez gönderildiği anlamına gelir. Turnstile token'ları tek kullanımlıktır ve beş dakika sonra sona erer.

Hata ayıklama için:

  • https://challenges.cloudflare.com/turnstile/v0/siteverify adresine yapılan isteklerin günlüğünü etkinleştirin
  • Token oluşturma zamanını doğrulama zamanıyla karşılaştırın.
  • Backend'inizin aynı token'ı iki kez doğrulayıp doğrulamadığını kontrol edin, örneğin yeniden denemeler, yönlendirmeler veya yinelenen istek işleme sırasında.