reCAPTCHA, görünür onay kutusunun veya görüntü sorununun çok ötesine geçen çok katmanlı bir algılama sistemi kullanır. Kullanıcı CAPTCHA ile etkileşime girmeden önce otomatik araçları tanımlayan gelişmiş bir test profil yapılandırması ve davranış analizi motorunu çalıştırır. Bu kılavuz, reCAPTCHA'nın kullandığı tüm algılama yöntemlerini ayrıntılı olarak açıklıyor ve CaptchaAI gibi API tabanlı çözümleyicilerin tüm bunları nasıl ele aldığını açıklıyor.
Algılama katmanı 1: JavaScript ortamı araştırması
reCAPTCHA, denetimsiz tarayıcıları ve otomasyon çerçevelerini tespit etmek için JavaScript araştırmaları yürütür.
navigator.userAgent algılama
Birincil otomasyon göstergesi:
// Selenium/Puppeteer set this automatically
navigator.userAgent === true // → Automation detected
// Real browser
navigator.userAgent === undefined // or false → Normal browser
navigator.userAgent, true olduğunda reCAPTCHA, oturumu hemen otomatik olarak işaretler ve genellikle 0,1 veya daha düşük bir puanla sonuçlanır.
Eksik tarayıcı API'leri
reCAPTCHA, headless tarayıcıların atladığı veya farklı şekilde uyguladığı API'leri araştırır:
// Probes reCAPTCHA performs (simplified)
const checks = {
// Chrome-specific object
hasChrome: !!window.chrome,
hasChromeRuntime: !!(window.chrome && window.chrome.runtime),
// Plugin and MIME type arrays
pluginCount: navigator.plugins.length,
mimeTypeCount: navigator.mimeTypes.length,
// Notification permission
notificationPermission: Notification.permission,
// Speech synthesis voices
speechVoices: window.speechSynthesis.getVoices().length,
// Performance observer
hasPerformanceObserver: typeof PerformanceObserver !== "undefined",
};
| Prob | Beklenen (gerçek Chrome) | Headless Krom | Algılama |
|---|---|---|---|
window.chrome |
Nesne | tanımsız veya minimum | Otomasyon |
navigator.plugins |
2-5 eklenti | Boş dizi | Otomasyon |
navigator.permissions |
Sorgu() içeren nesne | Atılabilir veya kaybolabilir | Otomasyon |
Notification.permission |
"varsayılan" | Atabilir | Otomasyon |
window.speechSynthesis |
Sesli nesne | Boş veya eksik | Otomasyon |
Prototip zinciri kurcalama
Gelişmiş otomasyon araçları, varlıklarını gizlemek için tarayıcı API'lerini geçersiz kılar. Kurcalamaya karşı reCAPTCHA testleri:
// reCAPTCHA may check if native functions were modified
const nativeToString = Function.prototype.toString;
const pluginsToString = navigator.plugins.toString();
// Overridden functions have different toString output:
// Native: "function get plugins() { [native code] }"
// Overridden: "function () { return [...fakePlugins] }"
Algılama katmanı 2: Canvas ve WebGL test profil yapılandırması alma
Kanvas test profil yapılandırması
reCAPTCHA, bir tuval üzerinde gizli öğeleri oluşturur ve piksel verilerini geri okur. Sonuç, işletim sistemine, GPU'ya, yazı tipi oluşturma motoruna ve kenar yumuşatma ayarlarına göre değişir:
// Simplified canvas test profil yapılandırması
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
ctx.textBaseline = "alphabetic";
ctx.font = "14px Arial";
ctx.fillStyle = "#f60";
ctx.fillRect(125, 1, 62, 20);
ctx.fillStyle = "#069";
ctx.fillText("CaptchaTest,!", 2, 15);
const test profil yapılandırması = canvas.toDataURL();
// Unique per browser/OS/GPU combination
Algılama sinyalleri:
- Bildirilen farklı OS/browsers →'de aynı test profil yapılandırması algılandı
- Tuval işlemleri tekdüze /blank verilerini döndürür → Headless ortam
- test profil yapılandırması, bilinen headless Chrome modeliyle eşleşiyor → Otomasyon işaretlendi
WebGL test profil yapılandırması
const gl = document.createElement("canvas").getContext("webgl");
const debugInfo = gl.getExtension("WEBGL_debug_renderer_info");
const vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
// Real browser: "ANGLE (NVIDIA GeForce RTX 3060 Direct3D11 vs_5_0 ps_5_0)"
// Headless Chrome: "Google Inc. (Google SwiftShader)" ← Strong bot signal
SwiftShader, herhangi bir donanım GPU'su bulunmadığında kullanılan Google'ın yazılım GPU oluşturucusudur; net bir headless ortam göstergesidir.
Tespit katmanı 3: Davranış analizi
Bu reCAPTCHA'nın en güçlü algılama katmanıdır. Sayfa yüklemesinden form gönderimine kadar kullanıcı davranışını izler.
Fare hareketi analizi
reCAPTCHA records:
├─ Mouse coordinates at ~60fps intervals
├─ Velocity and acceleration at each point
├─ Trajectories between clickable elements
├─ Hover patterns over links and buttons
├─ Micro-movements while "stationary"
└─ Natural overshoot when targeting elements
Human pattern:
- Curved paths with variable speed
- Natural acceleration/deceleration (Fitts's Law)
- Random micro-jitter during hovering
- Occasional overshoot and correction
Bot pattern:
- Zero mouse events (no mouse simulation)
- Straight lines at constant speed
- Perfect targeting (no overshoot)
- Identical patterns across sessions
Klavye analizi
reCAPTCHA records:
├─ Inter-key interval for each key pair
├─ Key hold duration (keydown to keyup)
├─ Error rate (backspace frequency)
├─ Typing rhythm consistency
└─ Input method (keyboard vs paste vs JavaScript)
Human pattern:
- Variable intervals (80-300ms typical)
- Faster for common character pairs
- Occasional errors and corrections
- keydown → keypress → keyup sequence
Bot pattern:
- Constant intervals or instant input
- No keypress events (value set via JS)
- Zero errors
- All characters appear simultaneously
Zamanlama ve etkileşim dizisi
reCAPTCHA records:
├─ Time from page load to first interaction
├─ Time from CAPTCHA rendering to click
├─ Scroll events and depths
├─ Focus/blur events on form fields
└─ Tab between fields vs click between fields
Suspicious patterns:
- First interaction < 1 second after page load
- CAPTCHA clicked immediately after rendering
- No scroll events before interacting with below-fold content
- All form fields filled in <500ms
Algılama katmanı 4: Ağ ve IP analizi
IP itibar veritabanı
Google kapsamlı IP istihbaratını korur:
- Bilinen veri merkezi aralıkları: AWS (52.x.x.x, 54.x.x.x), GCP, Azure, DigitalOcean vb.
- Bilinen proxy/VPN sağlayıcıları: NordVPN, ExpressVPN, ticari proxy hizmetleri
- Tor çıkış düğümleri: Düzenli olarak güncellenen genel liste
- Kötüye kullanım geçmişi: Spam, kazıma veya CAPTCHA çiftçiliği yapan IP'ler
- Coğrafi modeller: Hızlı konum değişiklikleri VPN atlama modellerini işaretler
TLS test profil yapılandırması
Her HTTP istemcisi benzersiz bir TLS el sıkışma test profil yapılandırması (JA3/JA4) üretir:
Chrome 120: JA3 = 771,4865-4866-4867-49195-49199-49196..
Python/requests: JA3 = 771,4866-4867-4865-49196-49200..
curl/libcurl: JA3 = 771,49196-49200-159-52393-52392..
reCAPTCHA, TLS parmak izinin bildirilen Kullanıcı Aracısı ile eşleştiğini doğrular. Python TLS parmak izine sahip bir Chrome Kullanıcı Aracısı, otomasyon olarak işaretlenir.
HTTP başlık analizi
Real Chrome headers:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,...
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Sec-CH-UA: "Not_A Brand";v="8", "Chromium";v="120"
Sec-CH-UA-Platform: "Windows"
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Automation headers (missing or different):
- Missing Sec-CH-UA headers
- Missing Accept-Language
- Non-standard Accept header
- Missing Sec-Fetch-* headers
Algılama katmanı 5: Oturumlar arası zeka
reCAPTCHA, birden fazla oturum ve sitedeki kalıpları izler:
- Oturum test profil yapılandırması korelasyonu: Birçok sitede hızlı isteklerde bulunan aynı tarayıcı test profil yapılandırması
- Çözme modeli analizi: Tutarlı zaman aralıklarında doğru cevaplar (insanların çözme süreleri değişkendir)
- Zorluk yanıt korelasyonu: Aynı zorlukları saniyeler içinde çözen birden fazla oturum
- Çerez zaman çizelgesi: Çerez kalıcılığı olmadan aynı IP'den birden fazla yeni oturum
API tabanlı çözümleyiciler algılamayı nasıl gerçekleştirir?
CaptchaAI gibi API tabanlı çözücüler, tamamen ayrı bir ortamda çalışarak reCAPTCHA'nın algılama sistemini atlar:
Your automation:
Extracts sitekey + pageurl from target page
↓
Sends to CaptchaAI API (HTTPS request to ocr.captchaai.com)
↓
CaptchaAI's solver environment:
├─ Real browser with genuine test profil yapılandırması (not headless)
├─ Human-like behavioral patterns
├─ Clean residential IP
├─ Valid cookies and session history
├─ Matching TLS/header fingerprints
└─ Solves the challenge with human-like behavior
↓
Returns valid g-recaptcha-response token
↓
Your automation:
Submits token to target website
↓
Target website validates token with Google
→ Google sees a legitimate solve from a trusted environment
→ Token validated: success = true
Önemli bilgi: Otomasyonunuz hiçbir zaman reCAPTCHA ile doğrudan etkileşime girmez. Çözücü, tüm test profil yapılandırması alma, davranış analizi ve sorgulama tamamlama işlemlerini, her algılama katmanını geçecek şekilde optimize edilmiş bir ortamda gerçekleştirir. Kodunuzun yalnızca ortaya çıkan jetonu göndermesi gerekir.
Python örneği
import requests
import time
API_KEY = "YOUR_API_KEY"
# Your automation only needs sitekey and pageurl
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",
"json": 1,
})
task_id = submit.json()["request"]
# Poll for token
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"]
# Submit this token to the target site's form
print("Token received — submit to target form")
break
Node.js örneği
const axios = require("axios");
async function solveRecaptcha(sitekey, pageurl) {
const API_KEY = "YOUR_API_KEY";
const { data: submit } = await axios.post(
"https://ocr.captchaai.com/in.php",
new URLSearchParams({
key: API_KEY,
method: "userrecaptcha",
googlekey: sitekey,
pageurl: pageurl,
json: 1,
})
);
const taskId = submit.request;
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("Timeout");
}
Sık sorulan sorular
reCAPTCHA bir API çözücünün kullanıldığını tespit edebilir mi?
reCAPTCHA, jetonu kendi kayıtlarına göre doğrular. Çözücü ortamı insan benzeri davranışla meşru bir çözüm ürettiyse belirteç geçerlidir. Google, üçüncü taraf bir hizmet değil, normal bir insan çözümü görüyor. Tokenın kendisi nasıl oluşturulduğuna dair bilgi taşımaz.
Selenyum kullanmak her zaman reCAPTCHA tespitini tetikler mi?
Varsayılan ChromeDriver'a sahip varsayılan Selenyum, navigator.userAgent = true, eksik Chrome API'leri ve ChromeDriver HTTP üstbilgileri nedeniyle hemen algılanır. Gizli olarak yapılandırılmış Selenyum (algılanmayan krom sürücü, gizli eklentiler) algılamayı azaltabilir ancak ortadan kaldırmaz. API tabanlı çözüm, tarayıcınızdaki reCAPTCHA ile etkileşime girmeyerek sorunu tamamen ortadan kaldırır.
reCAPTCHA algılama yöntemlerini ne kadar hızlı günceller?
Google, reCAPTCHA'nın tespit buluşsal yöntemini sürekli olarak günceller. Büyük güncellemeler birkaç ayda bir gerçekleşir. Yeni gözetimsiz tarayıcı algılama yöntemleri genellikle yeni bir otomasyon aracının piyasaya sürülmesinden sonraki haftalar içinde devreye alınır. CaptchaAI gibi API çözücü hizmetleri, kendi optimize edilmiş çözüm ortamlarını korudukları için bu değişikliklere anında uyum sağlar.
reCAPTCHA, algılama verilerini web siteleri arasında paylaşır mı?
Evet. reCAPTCHA'nın risk analizi, _GRECAPTCHA çerezi ve Google'ın sunucu tarafı zekası aracılığıyla siteler arası sinyalleri içerir. reCAPTCHA korumalı bir sitedeki kötü davranış, aynı tarayıcı profilini kullanan diğer sitelerdeki puanların düşmesine neden olabilir.
Özet
reCAPTCHA, otomasyonu beş katman aracılığıyla algılar: JavaScript ortamı araştırması (headless algılama), canvas/WebGL test profil yapılandırması alma, davranış analizi (fare, klavye, kaydırma), ağ/IP itibarı ve oturumlar arası zeka. API tabanlı çözücüler gibiCaptchaAIZorlukları ayrı, optimize edilmiş bir ortamda çözerek ve geçerli bir jeton döndürerek beş katmanın tamamını ele alın. Otomasyon kodunuz hiçbir zaman reCAPTCHA ile doğrudan etkileşime girmez, bu da onu algılama sistemi için görünmez kılar.