reCAPTCHA v3, 2018'de tanıtıldığından beri web'deki baskın görünmez anti-bot mekanizması haline geldi. Kullanıcıya bir bulmaca göstermez; bunun yerine her sayfa etkileşiminde grecaptcha.execute() üzerinden 0.0 ile 1.0 arasında sürekli bir risk puanı döndürür. QA ve otomasyon mühendisleri için bu, klasik "görüntüyü çöz" yaklaşımından çok daha zor bir engeldir: puan, davranışın ötesinde IP itibarı ve tarayıcı parmak izi gibi bileşenleri de içerir. Bu rehber, reCAPTCHA v3 puanlama nasıl çalışır sorusunu teknik derinlikte yanıtlar ve meşru otomasyonun geçer puan alması için pratik bir yaklaşım sunar.
Bu içerik, yetkili güvenlik testi, erişilebilirlik QA otomasyonu ve kendi siteniz üzerinde anti-bot doğrulaması yapan geliştiriciler için yazılmıştır. Hesap çalma, ödeme dolandırıcılığı veya toplu hesap oluşturma gibi kötüye kullanım senaryoları bu kapsamın dışındadır ve CFAA ve GDPR kapsamında ciddi hukuki sonuçlar doğurabilir.
reCAPTCHA v3 Puanlama Nasıl Çalışır: Temel Model
reCAPTCHA v3'ün çekirdeği, grecaptcha.execute(siteKey, {action: 'login'}) çağrısı başına bir token ve bu tokena bağlı bir risk puanı üretmektir. Token, istemci tarafında ~2 dakika süreyle geçerlidir ve sunucuya gönderilir. Sunucu, tokenı Google'ın siteverify uç noktasına POST eder ve yanıt olarak score, action, hostname, success ve hata kodları alır.
Puan 0.0 ile 1.0 arasında bir ondalık sayıdır. Google, puanı dahili olarak on bir ayrık kovaya (bucket) yuvarlar — tipik olarak 0.0, 0.1, 0.2, … 0.9 ve 1.0. Yani 0.47 gibi bir değer pratikte ya 0.4 ya da 0.5 kovasında ele alınır. Bu, puanın gerçek çözünürlüğünün ~0.1 adım olduğunu gösterir; daha ince farklar anlamsızdır.
Tipik Site Eşikleri
Google, eşiği sitenin kendisinin belirlemesini önerir; ancak pratikte çoğu site benzer kalıplar kullanır:
| Puan Aralığı | Tipik Site Davranışı | Kullanım Senaryosu |
|---|---|---|
| < 0.3 | Engelle (block) veya sessiz reddet | Spam, credential stuffing |
| 0.3 – 0.6 | Zorluk göster (challenge) veya ikincil doğrulama | Şüpheli ama belki insandır |
| > 0.6 | İzin ver (allow) | Normal kullanıcı trafiği |
recaptcha v3 score değeri tek başında yeterli değildir; action ve hostname alanlarının da eşleşmesi gerekir. Bir login action'ı için üretilmiş token, register action'ı için doğrulanamaz. Bu, token yeniden kullanım (replay) saldırılarına karşı temel bir savunmadır.
Teknik Bağlam: Neden Bu Problem Var
Klasik reCAPTCHA v2, kullanıcıya bir görüntü bulmacası gösterir ve çözümü doğrular. Bu yaklaşım iki sorun doğurdu: (1) kullanıcı deneyimini bozuyor ve dönüşümü düşürüyordu; (2) botlar görüntü tanıma modelleri ve bulmaca çözme servisleriyle aşırı kolaylaşıyordu. Google, v3'te bulmacayı tamamen kaldırdı ve bunun yerine istemci tarafında sessizce telemetri toplayan, sunucu tarafında puan döndüren bir model benimsedi.
Bu modelin zorluğu, puanın bir kara kutu olmasıdır. Google, hangi sinyallerin hangi ağırlıkla kullanıldığını açıklamaz. Ancak yıllar içinde güvenlik araştırmacıları ve otomasyon mühendisleri, puanı etkileyen başlıca bileşenleri ampirik olarak tespit etmiştir. Google'ın resmi reCAPTCHA v3 dokümantasyonu, puanın "kullanıcı etkileşim pattern'lerine" dayandığını belirtir ancak detay vermez.
Google'ın Birleştirdiği Sinyaller
reCAPTCHA v3 puanı, aşağıdaki sinyal kümelerinin birleştirilmesiyle oluşur:
1. Davranışsal Telemetri
Sayfa yüklendikten sonra grecaptcha.execute() çağrılana kadar geçen sürede toplanan veriler:
- Fare hareketleri: hız, ivme, düzlük, mikro-titremeler. İnsan fareleri doğrusal ve pürüzsüz hareket etmez; botlar genellikle Bezier eğrileriyle bile çok düzgün hareket eder.
- Scroll pattern'i: scroll hızındaki dalgalanmalar, dur-kalk davranışı.
- Klavye zamanlaması: tuşlar arası aralık (keystroke timing), backspace kullanımı.
- Sayfa etkileşim süresi: sayfa açıldıktan kaç ms sonra form gönderiliyor. 50 ms'de form doldurmak bot sinyalidir.
2. Google Çerez Grafiği
Eğer tarayıcıda bir Google oturumu (örneğin YouTube veya Gmail çerezi) varsa, Google bu kullanıcıyı çerez grafiği üzerinden tanıyabilir. Daha önce Google ekosisteminde "insan" olarak davranmış bir kullanıcı, daha yüksek puan alır. Bu, temiz bir tarayıcı profili ( hiç Google çerezi yok) ile ilk ziyarette puanın genellikle daha düşük olmasının nedenidir.
3. Tarayıcı Karakteristikleri
Google, tarayıcının TLS parmak izini, User-Agent, platform, dil, ekran çözünürlüğü ve JavaScript motoru özelliklerini toplar. Özellikle:
- JA3/JA4 TLS parmak izi: TLS ClientHello'daki cipher suite sıralaması, extensions sırası. Headless Chrome'un JA3 parmak izi, normal Chrome'dan farklı olabilir.
- Canvas/WebGL parmak izi: GPU ve sürücüye bağlı olarak canvas render çıktısı. Headless modda canvas parmak izi farklıdır.
- navigator.webdriver: Selenium/Puppeteer kontrollü tarayıcılarda
truedeğerini alır. Stealth eklentileri bunu gizlemeye çalışır. - JS sinyalleri:
window.chromevarlığı, plugin listesi,permissions.querydavranışı.
4. IP İtibarı
Belki de proxy kullanıcıları için en kritik bileşen budur. Google, IP'yi aşağıdaki açılardan değerlendirir:
- ASN tipi: Datacenter ASN'leri (AWS, GCP, Azure, DigitalOcean, OVH) genellikle düşük puan alır. ISP ASN'leri (residential) ise yüksek puan alır.
- Geçmiş davranış: Aynı IP'den daha önce spam, scraping veya credential stuffing yapılmışsa, IP "kirli" işaretlenir.
- Coğrafi tutarlılık: IP'nin geo-lokasyonu ile tarayıcının
navigator.languageve zaman dilimi tutarlı mı?
İşte bu noktada recaptcha score 0.3 eşiği devreye girer: bir datacenter IP'si, davranış mükemmel olsa bile puanı 0.3'ün altına çekebilir. Çünkü Google, IP itibarını davranışsal sinyallerle birlikte füzyonlar; tek bir güçlü "bot" sinyali tüm puanı çökertebilir.
Datacenter IP'ler Neden Puanı Düşürür
Bu, pratikte en sık karşılaşılan sorundur. Bir QA mühendisi, gerçek bir tarayıcıda, insani gecikmelerle, gerçek fare hareketleriyle form doldurur ve yine de 0.2 puan alır. Neden?
Çünkü Google'ın modeli, ASN tipini güçlü bir öncül (prior) olarak kullanır. Bir AWS us-east-1 IP'si (örneğin 54.144.x.x), "bu IP büyük ihtimalle bir sunucudur, sunuculardan gelen trafiğin büyük kısmı bot" öncülünü taşır. Bu öncül, davranışsal sinyallerle ağırlıklandırılır; ancak eğer davranışsal sinyaller nötrse ("insan gibi" ama "kesinlikle insan" değil), IP öncülü puanı baskılar.
Bu, residential proxy'lerin neden gerekli olduğunu açıklar. Bir residential IP, gerçek bir ISP'den (örneğin Comcast, Deutsche Telekom, Vodafone) atanmıştır ve Google'ın modelinde "ev kullanıcısı" öncülü taşır. Bu öncül, davranışsal sinyaller nötr olsa bile puanı yukarı çeker.
ProxyHat'ın residential ağı, 100+ ülkede gerçek ISP IP'leri sunar. Kullanıcı adında -country-US bayrağı ile ABD residential IP'leri alabilirsiniz:
http://user-country-US:PASSWORD@gate.proxyhat.com:8080
Bu, Google'ın IP itibarı bileşenini temiz tutar ve davranışsal sinyallerin puanı belirlemesine olanak tanır.
Sunucu Tarafında Token Doğrulama: siteverify
İstemci grecaptcha.execute() ile bir token alır ve bunu form verisiyle birlikte sunucuya gönderir. Sunucu, tokenı Google'a doğrulatmak zorundadır:
POST https://www.google.com/recaptcha/api/siteverify
Content-Type: application/x-www-form-urlencoded
secret=YOUR_SECRET_KEY&token=TOKEN_FROM_CLIENT&remoteip=USER_IP
Yanıt örneği:
{
"success": true,
"score": 0.7,
"action": "login",
"challenge_ts": "2026-01-15T12:00:00Z",
"hostname": "example.com",
"error-codes": []
}
Sunucu tarafında üç kritik kontrol yapılmalıdır:
- score eşiği:
score >= 0.5(veya sitenin belirlediği eşik). - action eşleşmesi: Dönen
action, beklenen action ile birebir eşleşmeli.logintokenıregisteriçin kullanılamaz. - hostname eşleşmesi: Dönen
hostname, sitenin domainiyle eşleşmeli. Bu, tokenın başka bir siteden çalınıp yeniden kullanılmasını engeller.
Bu kontrollerden herhangi biri başarısız olursa, istek reddedilmelidir. Google, siteverify yanıtının önbelleğe alınmamasını önerir; her token yalnızca bir kez doğrulanabilir.
Meşru Otomasyon için Pratik Yaklaşım: ProxyHat + Gerçek Tarayıcı
Aşağıdaki yaklaşım, yetkili test (kendi siteniz veya izin verilen bir site üzerinde) ve erişilebilirlik QA otomasyonu için tasarlanmıştır. Amaç, recaptcha v3 bypass değil, puanın site eşiğinin üzerinde kalmasıdır.
Bileşenler
- Gerçek tarayıcı: Headless olmayan Chromium veya stealth modunda Playwright/Puppeteer.
navigator.webdrivergizlenmeli, JA3 parmak izi normal Chrome ile uyumlu olmalı. - Residential proxy: ProxyHat residential ağı,
-country-USile ABD IP'leri. - İnsani etkileşim: Sayfa yüklendikten sonra 2-5 saniye bekle, fareyi hareket ettir, scroll yap, form alanlarına klavye ile yaz (clipboard paste değil).
- Tutarlı coğrafi sinyal: Proxy ülkesi ile tarayıcının
navigator.languageve zaman dilimi tutarlı olmalı. ABD proxy'si ileen-USdil veAmerica/New_Yorkzaman dilimi.
Python Örneği
from playwright.sync_api import sync_playwright
import time
import random
PROXY = "http://user-country-US:PASSWORD@gate.proxyhat.com:8080"
with sync_playwright() as p:
browser = p.chromium.launch(
headless=False,
proxy={"server": PROXY},
args=[
"--disable-blink-features=AutomationControlled",
"--lang=en-US",
],
)
context = browser.new_context(
locale="en-US",
timezone_id="America/New_York",
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/120.0.0.0 Safari/537.36",
)
page = context.new_page()
page.goto("https://example.com/login")
# Insani bekleme
time.sleep(random.uniform(2.0, 4.0))
# Fare hareketi
page.mouse.move(random.randint(100, 400), random.randint(100, 400))
page.mouse.move(random.randint(200, 600), random.randint(200, 500))
# Scroll
page.mouse.wheel(0, random.randint(50, 150))
time.sleep(random.uniform(0.5, 1.5))
# Form doldur (klavye ile, harf harf)
page.fill("#email", "")
page.type("#email", "test@example.com", delay=random.randint(50, 120))
page.fill("#password", "")
page.type("#password", "securepass123", delay=random.randint(50, 120))
time.sleep(random.uniform(1.0, 2.0))
# reCAPTCHA token'ı al
token = page.evaluate("""
async () => {
await new Promise(r => setTimeout(r, 500));
return await grecaptcha.execute('SITE_KEY', {action: 'login'});
}
""")
print(f"Token: {token[:40]}...")
# Formu gönder
page.click("button[type=submit]")
page.wait_for_timeout(3000)
browser.close()
Bu örnekte kritik noktalar:
delayparametresi, her tuş vuruşu arasında 50-120 ms gecikme ekler. İnsanlar harf harf ve düzensiz hızda yazar.--disable-blink-features=AutomationControlledbayrağı,navigator.webdriver'ı gizlemeye yardımcı olur.- Proxy ülkesi (US) ile tarayıcı dili (
en-US) ve zaman dilimi (America/New_York) tutarlıdır. - Sayfa etkileşim süresi 2-5 saniye, gerçek kullanıcı ortalamasına yakındır.
SOCKS5 Alternatifi
Eğer SOCKS5 tercih ediyorsanız:
socks5://user-country-US:PASSWORD@gate.proxyhat.com:1080
Playwright'da SOCKS5 proxy için:
proxy={"server": "socks5://gate.proxyhat.com:1080",
"username": "user-country-US",
"password": "PASSWORD"}
Yaygın Hatalar ve Edge Case'ler
1. Headless Mode ve navigator.webdriver
Vanilla headless Chromium, navigator.webdriver === true döndürür. Bu, reCAPTCHA v3 için güçlü bir bot sinyalidir. Çözüm: ya headless=False kullanın (Xvfb ile sunucuda çalıştırabilirsiniz) ya da --disable-blink-features=AutomationControlled bayrağıyla birlikte playwright-stealth gibi bir eklenti kullanın.
2. Coğrafi Tutarsızlık
Almanya residential proxy'si (-country-DE) ile en-US dil ve America/New_York zaman dilimi kullanmak, Google'ın modelinde tutarsızlık sinyali oluşturur. Proxy ülkesine göre dil ve zaman dilimini ayarlayın:
http://user-country-DE-city-berlin:PASSWORD@gate.proxyhat.com:8080
Bu IP için de-DE dili ve Europe/Berlin zaman dilimi kullanın.
3. Tek IP'de Yüksek İstek Hacmi
Bir residential IP'den dakikada 50+ grecaptcha.execute() çağrısı, IP'yi "şüpheli" işaretleyebilir. ProxyHat'ın rotating residential modunda, her istekte yeni IP almak için session bayrağını kaldırın:
http://user-country-US:PASSWORD@gate.proxyhat.com:8080
Sticky session gerekirse:
http://user-session-abc123-country-US:PASSWORD@gate.proxyhat.com:8080
4. Token Süresi Dolması
Token, ~120 saniye süreyle geçerlidir. Eğer form doldurma uzun sürerse, token süresi dolar ve siteverify timeout-or-duplicate hatası döndürür. Çözüm: form gönderiminden hemen önce grecaptcha.execute() çağırın.
5. Action Eşleşmemesi
İstemci {action: 'login'} ile token üretip sunucu register action'ını bekliyorsa, siteverify success: true döndürür ama action farklı olur. Sunucu mutlaka action eşleşmesini kontrol etmelidir.
ProxyHat Kurulumu ve İç Bağlantılar
ProxyHat residential proxy'leri, reCAPTCHA v3 puanlamasında IP itibarı bileşenini temiz tutmak için tasarlanmıştır. Başlamak için:
- ProxyHat fiyatlandırma sayfasından residential proxy paketinizi seçin.
- Dashboard'dan kullanıcı adı ve şifrenizi alın.
- Kullanıcı adına
-country-US(veya hedef ülke) bayrağını ekleyin. - Gateway:
gate.proxyhat.com:8080(HTTP) veya:1080(SOCKS5).
Diğer ilgili kaynaklar:
- Web scraping kullanım senaryosu — anti-bot aşma stratejileri.
- SERP tracking kullanım senaryosu — Google sonuçları izleme.
- ProxyHat dokümantasyonu — tam API referansı.
Nerede Uygun, Nerede Değil
Bu rehberin kapsamı, aşağıdaki meşru senaryolarla sınırlıdır:
- Kendi siteniz üzerinde test: reCAPTCHA v3 entegrasyonunuzu QA yapıyorsunuz ve puan dağılımını ölçmeniz gerekiyor.
- Erişilebilirlik QA otomasyonu: Ekran okuyucu testleri için form akışlarını otomatize ediyorsunuz.
- Yetkili penetrasyon testi: Bir müşteri, kendi sitesinde anti-bot kontrollerini test etmeniz için yazılı yetki verdi.
- Güvenlik araştırması: Akademik veya savunma amaçlı anti-bot mekanizması analizi.
Aşağıdaki senaryolar kapsam dışıdır ve yasa dışı olabilir:
- Hesap oluşturma spam'i (mass account registration).
- Credential stuffing / brute-force saldırıları.
- Ödeme dolandırıcılığı veya sahte işlem.
- Başka bir kullanıcının hesabına izinsiz erişim.
- Toplu ticket/sneaker satın alma (scalping).
ABD Computer Fraud and Abuse Act (CFAA), izinsiz erişimi ve "aşırı kullanım"ı suç sayar. GDPR ise kişisel verilerin izinsiz işlenmesini düzenler. Bir sitenin ToS'unu ihlal etmek, CFAA kapsamında "aşırı erişim" olarak değerlendirilebilir. Her zaman yazılı yetki aldığınızdan emin olun.
Key Takeaways
Önemli Çıkarımlar
- reCAPTCHA v3, 0.0–1.0 arası sürekli risk puanı döndürür; on bir kovaya ayrılır ve ~0.1 çözünürlüğe sahiptir.
- Tipik eşikler: <0.3 engelle, 0.3–0.6 zorluk, >0.6 izin ver.
- Puan; davranışsal telemetri, Google çerez grafiği, tarayıcı parmak izi ve IP itibarının birleştirilmesiyle oluşur.
- Datacenter IP'ler, davranış mükemmel olsa bile puanı 0.3'ün altına çekebilir; residential proxy gerekir.
- Sunucu tarafında action ve hostname eşleşmesi zorunludur; token ~120 saniye geçerlidir.
- Gerçek tarayıcı + residential proxy + insani etkileşim + coğrafi tutarlılık = geçer puan.
- Yalnızca yetkili test ve erişilebilirlik QA için kullanın; CFAA ve GDPR kapsamında izinsiz kullanım suçtur.
SSS
reCAPTCHA v3 puanlama nasıl çalışır?
reCAPTCHA v3, grecaptcha.execute() çağrısı başına 0.0 ile 1.0 arasında sürekli bir risk puanı döndürür. 1.0 insana en yakın, 0.0 bota en yakın anlamına gelir. Puan, fare/scroll/klavye zamanlaması, sayfa etkileşim telemetrisi, Google çerez grafiği, tarayıcı özellikleri ve IP itibarı gibi sinyallerin birleştirilmesiyle hesaplanır. Sunucu tarafında siteverify ile doğrulanır ve site kendi eşiğini belirler.
reCAPTCHA v3 puanlaması proxy kullanıcıları için neden önemli?
Puanın önemli bir bileşeni IP itibarıdır. Datacenter ve önceden işaretlenmiş IP'ler, davranış ne kadar insana benzese de puanı 0.3'ün altına çekebilir. Bu da erişim engellemesine veya zorluk gösterilmesine yol açar. Residential proxy'ler, IP itibarı bileşenini temiz tutarak meşru otomasyonun geçer puan almasını sağlar.
reCAPTCHA v3 için en iyi proxy tipi hangisidir?
reCAPTCHA v3 puanını yüksek tutmak için residential proxy'ler en uygun seçenektir. Gerçek ISP'lerden atanmış IP'ler, Google'ın IP itibarı modelinde temiz kabul edilir. Datacenter IP'leri genellikle düşük puan alır. Mobil proxy'ler de yüksek puan verebilir ancak maliyetleri daha yüksektir. ProxyHat residential ağında ülke ve şehir hedefleme ile puanı stabilize edebilirsiniz.
reCAPTCHA v3 uygulamasında bloklardan nasıl kaçınılır?
Bloklardan kaçınmak için: gerçek bir tarayıcı (headless olmayan veya stealth modunda) kullanın, fare hareketleri ve scroll ile insani etkileşim simüle edin, residential proxy ile temiz IP kullanın, action ve hostname değerlerini doğru eşleştirin, tek IP'de aşırı istek yapmaktan kaçının. Asla meşru test veya erişilebilirlik QA dışında kullanmayın; CFAA ve GDPR kapsamında izinsiz erişim suç teşkil edebilir.






