Puanınız 0,3'te takılı kaldıysa sorumlu tek bir ayar değildir: reCAPTCHA'nın Gelişmiş Risk Analizi (ARA) motoru, sayfa açıldığı anda onlarca sinyal toplar ve bunları 0,0 (kesin bot) ile 1,0 (kesin insan) arasında tek bir sayıya indirir. Otomasyonda puanı en çok düşüren üç kalem sırasıyla şudur: hiç fare hareketi olmaması, veri merkezi IP'si ve headless tarayıcının ele verdiği eksik JavaScript API'leri. Aşağıda her sinyal grubunun puana ne kadar dokunduğunu ve hangi sırayla ilgilenmeye değdiğini bulacaksınız.
Google puanlama formülünü yayınlamıyor. Buradaki değerler kamuya açık testlere ve gözlem raporlarına dayanır; ortama, siteye ve zamana göre değişebilir.
Puanı belirleyen beş sinyal grubu
reCAPTCHA sinyalleri beş grupta toplar; nihai puan bu grupların ağırlıklı bileşkesidir:
Final Score = f(Browser Signals, Behavioral Signals, Network Signals,
History Signals, Environmental Signals)
Ağırlık sırası pratikte şöyle işler: davranış > tarayıcı > ağ > geçmiş > ortam. Düzeltme sırası ise tersinedir — en ucuz kazançlar tarayıcı ve ağ tarafındadır.
Tarayıcı sinyalleri: otomasyonun en görünür tarafı
Bu grup tek bir soruya cevap arar: istemci gerçek bir tarayıcı mı, yoksa otomasyon aracı mı?
Eksik JavaScript API'leri neyi ele veriyor
reCAPTCHA, headless tarayıcıların ya hiç sunmadığı ya da farklı doldurduğu API'leri sorgular:
| Kontrol edilen API | Gerçek tarayıcıda beklenen | headless göstergesi |
|---|---|---|
navigator.userAgent |
Sürüm ve platform bilgisi tutarlı | Otomasyon aracının varsayılan değeri (Selenium, Puppeteer) |
navigator.plugins |
En az 1 öğeli PluginArray | Boş veya yok |
navigator.languages |
Yerel ayar dizeleri içeren dizi | Boş dizi veya yok |
navigator.hardwareConcurrency |
2-16 (CPU ile uyumlu) | Bazen 0 veya tanımsız |
navigator.deviceMemory |
2-16 GB | Bazı headless yapılarda yok |
window.chrome |
runtime vb. içeren nesne |
headless Chrome'da yok |
Notification.permission |
default, granted veya denied |
Hata fırlatır veya yok |
Puana etkisi: Bu değerlerin eksik ya da birbiriyle çelişkili olması puanı 0,3-0,5 aralığında aşağı çeker.
Canvas çıktısı: makineye özgü imza
reCAPTCHA görünmez bir canvas öğesi çizip piksel verisini geri okur. Çıkan değer tarayıcı, işletim sistemi ve GPU üçlüsüne özgüdür.
// reCAPTCHA performs something similar to:
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
ctx.textBaseline = "top";
ctx.font = "14px 'Arial'";
ctx.fillText("Hello", 2, 2);
const fingerprint = canvas.toDataURL();
Sonuç üç şekilde okunur:
- Bildirilen tarayıcı/OS ile tutarlı çıktı → nötr
- Bilinen headless kalıplarıyla eşleşen çıktı → -0,3 ila -0,5
- Canvas çağrıları engellenmiş veya hep aynı veriyi döndürüyor → -0,4 ila -0,6
WebGL oluşturucu dizesi
WebGL oluşturucu dizesi GPU'yu doğrudan söyler:
const gl = document.createElement('canvas').getContext('webgl');
const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
// Expected: "ANGLE (NVIDIA GeForce GTX 1060...)"
// Headless: "SwiftShader" or "Google SwiftShader"
Puana etkisi: SwiftShader (headless Chrome'un yazılım tabanlı oluşturucusu) güçlü bir bot göstergesidir ve puanı 0,3-0,5 düşürür.
Davranışsal sinyaller: en ağır basan grup
Davranış sinyalleri puan hesabında en yüksek ağırlığa sahiptir ve sayfa yüklendiği saniyeden itibaren birikir. Sayfada 200 milisaniye geçirip formu gönderen bir istemci, diğer her şeyi doğru yapsa bile düşük puan alır.
Etkileşim sırası: insanlar önce okur
reCAPTCHA hangi öğeyle hangi sırada etkileşime girdiğinizi izler:
- İnsan: sayfaya tıklar, bağlantıların üzerinde durur, içeriği okur, sonra formu doldurur
- Bot: doğrudan form alanına gider, sırayla doldurur, gönderir
Puana etkisi: Sayfayı hiç incelemeden forma gitmek → -0,1 ila -0,3.
Kaydırma davranışı
- İnsan: ivmeli ve kademeli kaydırma, değişken hız, okumak için duraklamalar
- Bot: hiç kaydırma yok ya da alana anında odaklanma
Puana etkisi: Form etkileşiminden önce hiç kaydırma olayı yoksa → -0,2 ila -0,3.
Fare hareketi
Sayfa ziyareti boyunca fare koordinatları ve zaman damgaları toplanır:
| Sinyal | İnsan deseni | Bot deseni |
|---|---|---|
| Hareket sayısı | Ziyaret başına 50-500+ olay | 0-5 olay |
| Yörünge | Hızı değişen kavisli yollar | Düz çizgi, sabit hız |
| İvmelenme | Doğal hızlanma ve yavaşlama | Anında başlama ve durma |
| Mikro hareketler | Gezinirken küçük titremeler | Eylemler arasında tam hareketsizlik |
| Hedefi aşma | Hafif aşma ve düzeltme | Piksel hassasiyetinde isabet |
Puana etkisi: Hiç fare hareketi olmaması tek başına puanı 0,4-0,7 düşürebilir — listedeki en büyük tek kalem budur.
Klavye zamanlaması
Inter-key timing:
Human: Variable (50-300ms between keys, varies by key pair)
Bot: Constant (all keys at same interval, or instant paste)
Key events:
Human: keydown → keypress → keyup for each character
Bot: May skip keypress, or fire all events simultaneously
Corrections:
Human: Occasional backspace, re-typing
Bot: Perfect input without corrections
Puana etkisi: Metnin panodan veya JavaScript value ataması ile anında yazılması 0,1-0,2 puana mal olur.
Geçmiş sinyalleri: tarayıcı profilinin sicili
Aynı tarayıcı profiliyle geçmişte ne yaptığınız, bugünkü puanın başlangıç noktasını belirler.
Google oturum çerezleri
Tarama geçmişi olan bir Google hesabına giriş yapmış kullanıcılar avantajlıdır:
SID,HSID,SSIDçerezleri → oturumu açık bir Google kullanıcısı- Hiç Google çerezi yok → tanınmayan kullanıcı, daha düşük başlangıç puanı
Puana etkisi: Aktif Google oturumu → +0,1 ila +0,3.
reCAPTCHA'nın kendi çerezleri
Başarılı bir doğrulamadan sonra reCAPTCHA kendi çerezlerini yazar:
_GRECAPTCHA→ daha önce tamamlanmış bir çözümrc::a,rc::b,rc::c→ risk analizi veri çerezleri
Puana etkisi: Bu çerezleri taşımayan sıfırdan oturum → -0,1 ila -0,2. Her istekte temiz profil açan işlerin puanı bu yüzden hep düşük başlar.
Siteler arası itibar
Google, aynı tarayıcı profilinin farklı sitelerdeki reCAPTCHA davranışını izler. A sitesindeki iyi sicil B sitesindeki puanı yukarı çeker; tersi de geçerlidir.
Ağ sinyalleri: IP ve TLS tarafı
IP itibarı
Google şu girdilerden oluşan bir IP itibar veritabanı tutar: aynı IP'den gelen önceki doğrulama sonuçları, bilinen veri merkezi aralıkları (AWS, GCP, Azure, DigitalOcean vb.), bilinen VPN aralıkları, kötüye kullanım ve spam bildirimleri, arama ve reklam sahtekarlığı sinyalleri.
| IP türü | Tipik puan etkisi |
|---|---|
| Bireysel ISS bağlantısı, temiz sicil | Nötr ila +0,1 |
| Bireysel ISS bağlantısı, sicilinde kötüye kullanım var | -0,1 ila -0,2 |
| Veri merkezi | -0,3 ila -0,5 |
| Bilinen VPN aralığı | -0,2 ila -0,4 |
| Tor çıkış düğümü | -0,4 ila -0,6 |
| Yakın zamanda kötüye kullanım nedeniyle işaretlenmiş | -0,3 ila -0,6 |
TLS imzası (JA3/JA4)
TLS el sıkışması, istemcinin hangi şifre paketlerini ve uzantıları desteklediğini gösterir. Her istemcinin karakteristik bir imzası vardır:
- Chrome: kendine özgü şifre sırası, TLS 1.3, GREASE uzantıları
- Python
requests: farklı şifre sırası, GREASE yok, daha sade uzantı listesi - cURL: minimum uzantı, OpenSSL'e özgü kalıplar
Puana etkisi: Tarayıcı dışı bir TLS imzası → -0,2 ila -0,4. Saf HTTP istemcisiyle çalışan bir iş akışında bu satır neredeyse sabittir; puanı buradan kurtarmaya çalışmak yerine token'ı API ile almak çoğu zaman daha ucuza gelir.
HTTP başlıkları
| Başlık | İnsan göstergesi | Bot göstergesi |
|---|---|---|
User-Agent |
Güncel tarayıcı sürümüyle uyumlu | Eski sürüm veya otomasyon aracının UA'sı |
Accept-Language |
Yerel tercihlerle dolu (tr-TR,tr;q=0.9) |
Eksik veya jenerik |
Accept-Encoding |
gzip, deflate, br |
Eksik veya olağandışı |
Sec-CH-UA |
İstemci tarayıcıyla eşleşen ipuçları | Eksik (2022 öncesi başlık seti) |
Ortam sinyalleri: tutarlılık kontrolü
Bu grubun ağırlığı düşüktür, ama bir çelişki yakalandığında ceza nettir.
Saat dilimi ile IP uyumu
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
// Should match IP geolocation
// "America/New_York" with a New York IP → consistent
// "America/New_York" with a Tokyo IP → suspicious
İstanbul'daki ekiplerde en sık görülen çelişki burada çıkar: Frankfurt'taki sunucuda çalışan konteyner UTC bildirirken tarayıcı profili Europe/Istanbul der. Konteynerin TZ değerini, Accept-Language başlığını ve çıkış IP'sinin ülkesini aynı hikâyeyi anlatacak biçimde hizalayın; maliyeti sıfırdır.
Ekran, pencere ve pil değerleri
Bu grubun okuduğu diğer iki değer ekran ölçüleri ve pil durumudur:
screen.width, screen.height // Physical screen
window.innerWidth, innerHeight // Browser window
window.outerWidth, outerHeight // Including browser chrome
navigator.getBattery().then(battery => {
battery.level; // 0.0 to 1.0
battery.charging; // true/false
});
Puana etkisi: Olağandışı ekran değerleri (0×0, aşırı büyük ya da tam olarak varsayılan çözünürlük) → -0,1 ila -0,2. Battery API tek başına ceza getirmez; sürekli %100 şarjlı görünmek masaüstü ve sunucu ortamlarıyla zaten tutarlıdır.
Türkiye'deki ekipler için pratik notlar
Türk geliştirici pazarının ağırlığı e-ticaret ve fintech entegrasyonlarında; en sık karşılaşılan senaryo da bir ödeme adımının veya üyelik formunun otomatik regresyon testinde reCAPTCHA v3 duvarına çarpması oluyor. Üç pratik not:
- Test ortamınızı yerelleştirin.
Europe/Istanbulsaat dilimi,tr-TRyerel ayarı ve+90formatındaki sahte telefon verisi hem test verinizi gerçekçi kılar hem de ortam sinyallerini kendi içinde tutarlı tutar. - KVKK'yı akışın parçası sayın. Topladığınız veride kişisel veri varsa, CAPTCHA tarafını çözmüş olmanız hukuki tarafı çözmez; yetkilendirilmiş bir QA veya veri toplama akışında çalıştığınızdan emin olun.
- Maliyeti USD üzerinden planlayın. CaptchaAI planları thread bazlıdır ve thread başına çözüm sınırı yoktur;
BASIC ($15/ay, 5 thread)küçük bir regresyon paketi için sabit bir aylık kalemdir.
Puanı yükseltmek için ne yapılabilir
| Yaklaşım | Beklenen etki | Zorluk |
|---|---|---|
| Gerçek Chrome kullanın (headless değil) | +0,3 ila +0,5 | Düşük |
Otomasyon aracının varsayılan navigator.userAgent değerini düzeltin |
+0,2 ila +0,3 | Düşük |
| Fare hareketi simülasyonu ekleyin | +0,2 ila +0,4 | Orta |
| Kendi sunucu altyapınızın IP'lerini kullanın | +0,2 ila +0,3 | Düşük (maliyet) |
| Google çerezlerini oturumlar arasında koruyun | +0,1 ila +0,2 | Orta |
| TLS imzasını Chrome ile hizalayın | +0,1 ila +0,3 | Yüksek |
| Formdan önce sayfa gezintisini simüle edin | +0,1 ila +0,2 | Orta |
Alternatif: sinyal ayarı yerine API ile token alın
Bütün bu sinyalleri tek tek kovalamak yerine token'ı çözüm servisinden isteyebilirsiniz:
import requests
import time
API_KEY = "YOUR_API_KEY"
# Request a high-score token
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": "6LcR_RsTAAAAAN_r0GEkGBfq3L7KmU5JbPHJtwNp",
"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"High-score token received")
break
Akış üç adımdır:
- Görevi
in.phpuç noktasına gönderin. - Dönen
task_idileres.phpuç noktasını sorgulayın. status1 olduğundag-recaptcha-responsedeğerini forma yerleştirin; token'ın ömrü kısadır, gecikmeden gönderin.
Aynı iki uç nokta reCAPTCHA v2 onay kutusu, Cloudflare Turnstile ve GeeTest v3 akışlarında da aynı biçimde çalışır.
Sık sorulan sorular
Puanı yükseltmek için hangi değişiklik en hızlı sonucu verir?
headless modu bırakıp gerçek bir Chrome oturumu kullanmak. Tek başına 0,3-0,5 aralığında kazanç sağlar ve uygulaması bir saatlik iştir. İkinci sırada veri merkezi IP'sinden çıkmak gelir.
CaptchaAI'nin döndürdüğü token'ın puanını ben belirleyebilir miyim?
Hayır. API'de score-target gibi bir parametre yoktur; puanı her zaman Google hesaplar. Yapabileceğiniz şey isteğe cookies, userAgent ve proxy alanlarını eklemektir — bunlar puanın hesaplandığı bağlamı iyileştirir.
Aynı sitede sayfadan sayfaya puan neden değişiyor?
reCAPTCHA v3 puanı action parametresiyle bağlama oturtur; ana sayfanın, giriş formunun ve ödeme adımının temel puanları farklı olabilir. Ayrıca davranış sinyalleri oturum boyunca biriktiği için sonraki sayfalar genelde daha yüksek puan alır.
Veri merkezinde çalışan bir işi puan düşüşü olmadan yürütebilir miyim?
Doğrudan hayır — veri merkezi aralıkları -0,3 ila -0,5 arasında bir ceza taşır ve bunu tarayıcı tarafından telafi etmek zordur. Pratik yol, token üretimini işten ayırmaktır: iş sunucuda kalır, token'ı çözüm API'sinden alırsınız.
Puan düşünce neden reCAPTCHA v2 onay kutusu çıkıyor?
Çünkü çoğu uygulama düşük puanı bir geri dönüş akışına bağlar: eşiğin altındaki istek v2 onay kutusuna yönlendirilir. Karşınıza çıkan ızgara, düşük puanın sebebi değil belirtisidir.
Özet
reCAPTCHA puanı beş grubun bileşkesidir: davranış, tarayıcı, ağ, geçmiş ve ortam tutarlılığı. Otomasyonda ilk üç grup puanın büyük kısmını belirler; gerçek Chrome'a geçmek ve veri merkezi IP'sinden çıkmak ucuz kazançlardır, geri kalanı bakım maliyetlidir. Sürekli yüksek puan gerektiren bir iş akışında CaptchaAI ile token'ı doğrudan alabilir, isteğe cookies, userAgent ve proxy alanlarını ekleyerek Google'ın hesapladığı puanı iyileştirebilirsiniz.