Görünmez CAPTCHA'lar, görünür bir sorun göstermeden kullanıcıları doğrular. Tıklanacak bir onay kutusu, çözülecek bir resim ızgarası ve yazılacak bir metin yok. Doğrulama tamamen arka planda, tarayıcı davranışını, cihaz sinyallerini ve ağ itibarını analiz eden JavaScript aracılığıyla gerçekleşir. Otomasyon iş akışınız, bazı kullanıcılar için temiz bir şekilde gönderilen ancak diğerlerini engelleyen (sayfada görünür bir CAPTCHA olmayan) bir formla karşılaşırsa, görünmez bir CAPTCHA sistemiyle karşı karşıyasınız demektir.
Görünmez CAPTCHA'lar nasıl çalışır?
Tüm görünmez CAPTCHA'lar aynı temel modeli izler:
Page loads → CAPTCHA JavaScript injected
↓
Script runs in background, collecting signals:
├─ Browser test profil yapılandırması (canvas, WebGL, fonts, plugins)
├─ Behavioral data (mouse, keyboard, scroll, timing)
├─ Network data (IP reputation, TLS test profil yapılandırması)
├─ Device data (screen, GPU, CPU cores, memory)
└─ History data (cookies, previous CAPTCHA completions)
↓
Signals sent to CAPTCHA provider's risk engine
↓
Risk score computed
↓
Response varies by score:
├─ Low risk → Token issued silently (user sees nothing)
├─ Medium → Light challenge shown (checkbox, simple click)
└─ High risk → Full challenge (image grid) or block
Görünür CAPTCHA'lardan temel fark: doğrulama, yalnızca kullanıcı bir onay kutusunu tıkladığında değil, sayfa yüklendiği andan itibaren sürekli olarak çalışır.
Başlıca görünmez CAPTCHA sistemleri
1.reCAPTCHA v3
Sağlayıcı: Google Sürüm: 2018 Pazar payı: Görünmez CAPTCHA'lar arasında en yüksek
reCAPTCHA v3, her sayfa eylemi için 0,0 ile 1,0 arasında bir kayan nokta puanı döndürür. Puanla ne yapılacağına web sitesi sahibi karar verir.
Sinyalleri nasıl toplar:
<!-- reCAPTCHA v3 integration -->
<script src="https://www.google.com/recaptcha/api.js?render=SITE_KEY"></script>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('SITE_KEY', { action: 'login' }).then(function(token) {
// Token sent to server for verification
document.getElementById('captcha-token').value = token;
});
});
</script>
execute() çağrısı isteğe bağlı olarak sinyal toplamayı tetikler. Perde arkasında reCAPTCHA, komut dosyası yüklendiğinden beri veri topluyor.
Puan yorumu:
| Puan | Anlamı | Tipik eylem |
|---|---|---|
| 0,9 | Çok büyük ihtimalle insan | İzin ver |
| 0,7 | Muhtemelen insan | İzlemeyle izin ver |
| 0,5 | Belirsiz | Ek doğrulama gerektir |
| 0,3 | Muhtemelen bot | reCAPTCHA v2'yi engelle veya göster |
| 0,1 | Büyük olasılıkla bot | Blok |
Sayfa kaynağında algılama:
import requests
import re
def detect_recaptcha_v3(url):
html = requests.get(url, timeout=10).text
indicators = {
"recaptcha_v3": False,
"site_key": None,
"actions": [],
}
# Check for v3 script
if "recaptcha/api.js?render=" in html:
indicators["recaptcha_v3"] = True
match = re.search(r"render=([A-Za-z0-9_-]+)", html)
if match:
indicators["site_key"] = match.group(1)
# Find action names
actions = re.findall(r"action:\s*['\"](\w+)['\"]", html)
indicators["actions"] = actions
return indicators
print(detect_recaptcha_v3("https://staging.example.com/qa-login"))
2.Cloudflare Turnstile
Sağlayıcı: Cloudflare Sürüm: 2022 Pazar payı: En hızlı büyüyen
Turnstile, kullanıcı verilerinin toplanmasını gerektirmeden çok aşamalı bir doğrulama hattı kullanır.
Doğrulama aşamaları:
- Özel Erişim Jetonu kontrolü — Tarayıcı Apple PAT'i destekliyorsa doğrulama anında tamamlanır
- Etkileşimli olmayan zorluk — Tarayıcı hafif bir kriptografik iş kanıtı bulmacasını çözer
- Yönetilen zorluk — Cloudflare, ağından gelen risk sinyallerine göre etkileşimli olmayan ve etkileşimli arasında karar verir (internet trafiğinin %20'sinden fazlası Cloudflare üzerinden akar)
- İnteraktif mücadele — Yalnızca risk puanı yüksek olduğunda gösterilir; onay kutusu stilinde bir widget görüntüler
Entegrasyon:
<!-- Turnstile widget -->
<div class="cf-turnstile" data-sitekey="0x4AAAAAAAC3DHQhMMQ_Rxrg"></div>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
Algılama:
def detect_turnstile(url):
html = requests.get(url, timeout=10).text
indicators = {
"turnstile": False,
"site_key": None,
}
if "challenges.cloudflare.com/turnstile" in html or "cf-turnstile" in html:
indicators["turnstile"] = True
match = re.search(r'data-sitekey="([^"]+)"', html)
if match:
indicators["site_key"] = match.group(1)
return indicators
3. reCAPTCHA v2 Görünmez
Sağlayıcı: Google Sürüm: 2017
Bu, form gönderiminde programlı olarak tetiklenen reCAPTCHA v2'dir. Hiçbir onay kutusu görünmüyor; kullanıcı gönder düğmesini tıklıyor ve reCAPTCHA arka planda çalışıyor. Risk puanı yeterince yüksekse açılır pencerede görünür bir resim sorunu görünür.
Entegrasyon:
<button class="g-recaptcha"
data-sitekey="SITE_KEY"
data-callback="onSubmit"
data-size="invisible">
Submit
</button>
v3'ten temel farkı: v2 Invisible, riskli kullanıcılar için hala gözle görülür bir zorluk teşkil etmektedir. v3 hiçbir zaman gözle görülür bir zorluk göstermez; web sitesinin puanla ne yapacağına karar vermesi gerekir.
4. hCaptcha Pasif (Kurumsal)
Sağlayıcı: Intuition Machines Kullanılabilirlik: Yalnızca kurumsal katman
hCaptcha Enterprise'ın pasif modu, kullanıcıyı herhangi bir görünür widget olmadan değerlendirir. Standart hCaptcha ile aynı davranışsal sinyalleri kullanır ancak yalnızca en şüpheli ziyaretçiler için görsel bir zorluk sunar.
5. Apple Özel Erişim Belirteçleri
Sağlayıcı: Apple Kullanılabilirlik: iOS 16+, macOS Ventura+
Bu bir CAPTCHA sağlayıcısı değil, bir CAPTCHA atlama mekanizmasıdır. Apple cihazları, donanım doğrulaması yoluyla meşru olduklarını kanıtlayarak web sitelerinin CAPTCHA'ları tamamen atlamasına olanak tanır.
Device attestation:
1. Website requests a challenge from a token issuer
2. Device proves it is genuine without revealing identity
3. Token issuer generates a blind-signed token
4. Website verifies token → CAPTCHA skipped
Cloudflare, Fastly ve diğer CDN sağlayıcıları tarafından desteklenir.
CaptchaAI ile görünmez CAPTCHA'ları çözme
Görünmez CAPTCHA'lar hâlâ formlarla birlikte gönderilmesi gereken belirteçler oluşturmaya devam ediyor. API tabanlı çözücüler bu belirteçleri harici olarak oluşturur.
reCAPTCHA v3'yi Çözme
import requests
import time
API_KEY = "YOUR_API_KEY"
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": "6LdKlZEpAAAAAAOQjzC2v_d36tWxCl6dWsozdSy9",
"pageurl": "https://staging.example.com/qa-login",
"version": "v3",
"action": "login",
"json": 1,
})
task_id = submit.json()["request"]
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY,
"action": "get",
"id": task_id,
"json": 1,
}).json()
if result.get("status") == 1:
token = result["request"]
print(f"reCAPTCHA v3 token received (score ≥ 0.9)")
break
Cloudflare Turnstile'yi Çözme
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "turnstile",
"sitekey": "0x4AAAAAAAC3DHQhMMQ_Rxrg",
"pageurl": "https://example.com/signup",
"json": 1,
})
task_id = submit.json()["request"]
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY,
"action": "get",
"id": task_id,
"json": 1,
}).json()
if result.get("status") == 1:
turnstile_token = result["request"]
print(f"Turnstile token received (100% success rate)")
break
Node.js — reCAPTCHA v3'yi Çözme
const axios = require("axios");
async function solveRecaptchaV3(siteKey, pageUrl, action) {
const API_KEY = "YOUR_API_KEY";
// Submit
const { data: submit } = await axios.post(
"https://ocr.captchaai.com/in.php",
new URLSearchParams({
key: API_KEY,
method: "userrecaptcha",
googlekey: siteKey,
pageurl: pageUrl,
version: "v3",
action: action,
json: 1,
})
);
const taskId = submit.request;
// Poll
for (let i = 0; i < 60; i++) {
await new Promise((r) => setTimeout(r, 5000));
const { data: result } = await axios.get(
"https://ocr.captchaai.com/res.php",
{
params: {
key: API_KEY,
action: "get",
id: taskId,
json: 1,
},
}
);
if (result.status === 1) {
return result.request;
}
}
throw new Error("Solve timeout");
}
solveRecaptchaV3("SITE_KEY", "https://staging.example.com/qa-login", "login")
.then((token) => console.log("Token:", token.substring(0, 50) + "..."));
Görünmez CAPTCHA'ları tespit etme: kapsamlı denetleyici
import requests
import re
def detect_invisible_captcha(url):
"""Detect all invisible CAPTCHA types on a page."""
html = requests.get(url, timeout=10).text
results = []
# reCAPTCHA v3
if "recaptcha/api.js?render=" in html:
key = re.search(r"render=([A-Za-z0-9_-]+)", html)
results.append({
"type": "reCAPTCHA v3",
"site_key": key.group(1) if key else "unknown",
"solver_method": "userrecaptcha (version=v3)",
})
# reCAPTCHA v2 invisible
if 'data-size="invisible"' in html and "g-recaptcha" in html:
key = re.search(r'data-sitekey="([^"]+)"', html)
results.append({
"type": "reCAPTCHA v2 Invisible",
"site_key": key.group(1) if key else "unknown",
"solver_method": "userrecaptcha (invisible=1)",
})
# Cloudflare Turnstile
if "challenges.cloudflare.com/turnstile" in html:
key = re.search(r'data-sitekey="([^"]+)"', html)
results.append({
"type": "Cloudflare Turnstile",
"site_key": key.group(1) if key else "unknown",
"solver_method": "turnstile",
})
# hCaptcha (passive mode detected by script without visible widget)
if "hcaptcha.com/1/api.js" in html and 'data-size="invisible"' in html:
results.append({
"type": "hCaptcha Passive",
"solver_method": "hcaptcha",
})
if not results:
results.append({"type": "none detected"})
return results
for item in detect_invisible_captcha("https://example.com"):
print(item)
Görünmez CAPTCHA karşılaştırması
| Özellik | reCAPTCHA v3 | Turnstile | reCAPTCHA v2 Görünmez | hCaptcha Pasif |
|---|---|---|---|---|
| Görünür zorluk | Asla | nadiren | Bazen (geri dönüş) | nadiren |
| Gizlilik | Tarama verilerini toplar | Kişisel veri yok | Tarama verilerini toplar | Etkileşim verilerini toplar |
| Maliyet | Ücretsiz (1M/month) | Ücretsiz (sınırsız) | Ücretsiz (1M/month) | Yalnızca kurumsal |
| Puan döndürüldü | Evet (0,0-1,0) | Hayır (pass/fail) | Hayır (pass/fail) | Evet (Kurumsal) |
| Geri dönüş görünür sorunu | Web sitesi karar verir | CloudFlare tarafından yönetilmektedir | Resim ızgarası açılır penceresi | Resim ızgarası açılır penceresi |
| CaptchaAI desteği | Evet (v3 belirteci) | Evet (%100 başarı) | Evet (jeton) | Desteğe başvurun |
Puan politikası örnekleri
- İş akışı üretim trafiğine ulaşmadan önce yüksek, orta ve düşük puanlar için ne olacağını tanımlayın.
- Hedefin altındaki her puanı başarısızlık olarak ele almak yerine, adım adım kontrolleri tetiklemek için orta puan sonuçlarını kullanın.
- Puan dağılımını zaman içinde günlüğe kaydedin, böylece hedef taraftaki eşik kayması, dönüşüm düşmeden önce görünür hale gelir.
Sık sorulan sorular
Bir sayfanın görünmez bir CAPTCHA'ya sahip olup olmadığını nasıl anlarım?
CAPTCHA sağlayıcı komut dosyaları için sayfa kaynağını kontrol edin. recaptcha/api.js?render= (reCAPTCHA v3), challenges.cloudflare.com/turnstile (Turnstile) veya data-size="invisible" (hCaptcha pasif) ile hcaptcha.com/1/api.js'yi arayın. CAPTCHA widget'ının sayfada görünür bir varlığı yoktur, bu nedenle HTML'yi veya ağ isteklerini incelemeniz gerekir.
Görünmez bir CAPTCHA hala bir jeton üretiyor mu?
Evet. Görünmez CAPTCHA'lar, form gönderimlerine dahil edilmesi gereken belirteçler oluşturur. Belirteç gizli bir form alanına yerleştirilir veya istek parametresi olarak gönderilir. API tabanlı çözücüler bu belirteçleri harici olarak oluşturur.
Görünmez CAPTCHA'lar otomasyonumu herhangi bir hata göstermeden engelleyebilir mi?
Evet. Otomasyonunuz form gönderiminde geçerli bir CAPTCHA belirteci içermiyorsa sunucu, isteği sessizce reddeder veya genel bir hata döndürür. Görünür bir CAPTCHA sorgulaması olmayacak; belirteç eksik veya geçersiz olduğundan istek başarısız oluyor.
reCAPTCHA v3, reCAPTCHA v2'den daha mı güvenli?
reCAPTCHA v3'nin görsel olarak tespit edilmesi daha zordur (sayfada widget yoktur) ancak daha güvenli olduğu söylenemez. v3, web sitesinin dikkate alması gereken bir puan döndürür; eşik çok düşük ayarlanırsa botlar kolayca geçebilir. v2 kesin bir meydan okumayı zorunlu kılar/response. Uygulamada, katı bir eşiğe (0,7+) sahip v3 artı geri dönüş olarak v2 en iyi güvenliği sağlar.
Özet
Görünmez CAPTCHA'lar, herhangi bir görünür etkileşim olmadan tarayıcı davranışı, cihaz parmak izleri ve ağ itibarına ilişkin arka plan JavaScript analizi yoluyla kullanıcıları doğrular. reCAPTCHA v3 ve Cloudflare Turnstile baskın uygulamalardır ve Turnstile, ücretsiz fiyatlandırması ve gizliliği ön planda tutan tasarımı nedeniyle en hızlı şekilde büyümektedir. Otomasyon için görünmez CAPTCHA'lar hâlâ geçerli jetonlara ihtiyaç duyuyor. KullanmakCaptchaAIBu belirteçleri oluşturmak için: version=v3 ile userrecaptcha yöntemi aracılığıyla reCAPTCHA v3 ve %100 başarı oranıyla turnstile yöntemi aracılığıyla Cloudflare Turnstile.
İlgili Makaleler
- Geetest ve Cloudflare Turnstile Karşılaştırması
- Cloudflare Turnstile 403 Token Düzeltmesinden Sonra
- Cloudflare Turnstile Widget Modlarının Açıklaması