reCAPTCHA menggunakan sistem deteksi berlapis-lapis yang melampaui checkbox yang visible atau image challenge. Ia menjalankan mesin analisis sinyal browser dan perilaku canggih yang mengidentifikasi alat otomasi bahkan sebelum pengguna berinteraksi dengan CAPTCHA. Panduan ini menguraikan setiap metode deteksi yang digunakan reCAPTCHA dan menjelaskan cara API solver seperti CaptchaAI menanganinya.
Layer Deteksi 1: Pemeriksaan Lingkungan JavaScript
reCAPTCHA mengeksekusi pengecekan JavaScript untuk mendeteksi headless browser dan automation framework.
Deteksi sinyal browser otomatis
Indikator otomasi utama:
// Selenium/Puppeteer set this automatically
sinyal browser otomatis === true // → Automation detected
// Real browser
sinyal browser otomatis === undefined // or false → Normal browser
Jika sinyal browser otomatis adalah true, reCAPTCHA segera menandai sesi tersebut sebagai otomasi, biasanya menghasilkan skor 0,1 atau lebih rendah.
API Browser Tidak Ada
reCAPTCHA menyelidiki API yang hilang atau diimplementasikan berbeda oleh headless browser:
// 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",
};
| Probe | Diharapkan (Chrome asli) | Chrome headless | Deteksi |
|---|---|---|---|
window.chrome |
Object | undefined atau minimal | Otomasi |
navigator.plugins |
2-5 plugin | Array kosong | Otomasi |
navigator.permissions |
Object dengan query() | Mungkin throw atau hilang | Otomasi |
Notification.permission |
"default" | Mungkin throw | Otomasi |
window.speechSynthesis |
Object dengan voices | Kosong atau hilang | Otomasi |
Gangguan Prototype Chain
Alat otomasi canggih menimpa API browser untuk menyembunyikan keberadaannya. reCAPTCHA menguji gangguan tersebut:
// 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] }"
Layer Deteksi 2: sinyal browser Canvas dan WebGL
Canvas sinyal browser
reCAPTCHA merender elemen tersembunyi di canvas dan membaca kembali data piksel. Hasilnya bervariasi berdasarkan OS, GPU, font rendering engine, dan pengaturan anti-aliasing:
// Simplified canvas sinyal browser
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 sinyal browser = canvas.toDataURL();
// Unique per browser/OS/GPU combination
Sinyal deteksi:
- sinyal browser identik di berbagai OS/browser → Spoofing terdeteksi
- Operasi canvas mengembalikan data seragam/blank → Lingkungan headless
- sinyal browser cocok dengan pola Chrome headless yang dikenal → Ditandai sebagai otomasi
WebGL sinyal browser
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 adalah software GPU renderer Google yang digunakan saat hardware GPU tidak tersedia — indikator lingkungan headless yang jelas.
Layer Deteksi 3: Analisis Perilaku
Ini adalah layer deteksi reCAPTCHA yang terkuat. Ia memantau perilaku pengguna dari page load sampai form submission.
Analisis pergerakan tikus
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
Analisis papan ketik
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
Urutan waktu dan interaksi
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
Layer Deteksi 4: Analisis Jaringan dan IP
Database Reputasi IP
Google mempertahankan intelijen IP yang ekstensif:
- Rentang datacenter yang dikenal: AWS (52.x.x.x, 54.x.x.x), GCP, Azure, DigitalOcean, dll.
- Proxy/VPN provider yang dikenal: NordVPN, ExpressVPN, layanan proxy komersial
- Tor exit node: Daftar publik, diperbarui berkala
- Riwayat penyalahgunaan: IP yang terlibat spam, scraping, atau CAPTCHA farming
- Pola geografis: Perubahan lokasi cepat menandai pola VPN hopping
TLS sinyal browser
Setiap HTTP client menghasilkan sinyal browser TLS handshake yang unik (JA3/JA4):
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 memvalidasi bahwa TLS sinyal browser cocok dengan User-Agent yang dinyatakan. User-Agent Chrome dengan TLS sinyal browser Python ditandai sebagai otomasi.
Analisis HTTP Header
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
Layer Deteksi 5: Intelijen Lintas Sesi
reCAPTCHA melacak pola di beberapa sesi dan situs:
- Korelasi sinyal browser sesi: sinyal browser browser yang sama membuat request cepat di banyak situs
- Analisis pola solve: Jawaban benar dalam waktu yang konsisten (waktu solve manusia bervariasi)
- Korelasi respons challenge: Beberapa sesi menyelesaikan challenge serupa dalam hitungan detik
- Timeline cookie: Beberapa sesi baru dari IP yang sama tanpa cookie persistence
Cara API Solver Menangani Deteksi
API solver seperti CaptchaAI melewati sistem deteksi reCAPTCHA dengan beroperasi di lingkungan yang benar-benar terpisah:
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 sinyal browser (not headless)
├─ Human-like behavioral patterns
├─ Clean residential IP
├─ Valid cookies and session history
├─ Matching sinyal TLS/header
└─ 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
Insight utama: Otomasi Anda tidak pernah berinteraksi dengan reCAPTCHA secara langsung. Solver menangani semua sinyal browser, analisis perilaku, dan challenge solving dalam lingkungan yang dioptimalkan untuk melewati setiap layer deteksi. Kode Anda hanya perlu mengirimkan token yang dihasilkan.
Contoh Python
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
Contoh Node.js
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");
}
Pertanyaan Umum
Bisakah reCAPTCHA mendeteksi bahwa API solver telah digunakan?
reCAPTCHA memvalidasi token terhadap catatannya sendiri. Jika lingkungan solver menghasilkan solve yang sah dengan perilaku seperti manusia, token tersebut valid. Google melihat solve normal oleh manusia, bukan layanan pihak ketiga. Token itu sendiri tidak membawa informasi tentang cara pembuatannya.
Apakah Selenium selalu memicu deteksi reCAPTCHA?
Selenium default dengan ChromeDriver default segera terdeteksi karena sinyal browser otomatis = true, API Chrome yang hilang, dan header HTTP ChromeDriver. Selenium yang dikonfigurasi secara standar (undetected-chromedriver, konfigurasi standar) dapat mengurangi deteksi tapi tidak menghilangkannya. API solver menghindari masalah ini sepenuhnya karena tidak berinteraksi dengan reCAPTCHA di browser Anda.
Seberapa cepat reCAPTCHA memperbarui metode deteksinya?
Google terus memperbarui heuristik deteksi reCAPTCHA. Pembaruan besar terjadi setiap beberapa bulan. Metode deteksi headless browser baru biasanya diterapkan dalam beberapa minggu setelah alat otomasi baru dirilis. API solver seperti CaptchaAI segera beradaptasi karena mereka mempertahankan lingkungan solving yang dioptimalkan.
Apakah reCAPTCHA membagikan data deteksi lintas situs?
Ya. Risk analysis reCAPTCHA menggabungkan sinyal lintas situs melalui cookie _GRECAPTCHA dan server-side intelligence Google. Perilaku buruk di satu situs yang dilindungi reCAPTCHA dapat menurunkan skor di situs lain yang menggunakan profil browser yang sama.
Ringkasan
reCAPTCHA mendeteksi otomasi melalui lima layer: pemeriksaan lingkungan JavaScript (deteksi headless), sinyal browser canvas/WebGL, analisis perilaku (mouse, keyboard, scroll), reputasi jaringan/IP, dan intelijen lintas sesi. API solver seperti CaptchaAI menangani kelima layer dengan menyelesaikan challenge di lingkungan terpisah yang dioptimalkan dan mengembalikan token yang valid. Kode otomasi Anda tidak pernah berinteraksi langsung dengan reCAPTCHA.
Artikel Terkait
- Cara Solve reCAPTCHA v2 Callback via API
- Penanganan reCAPTCHA v2 + Turnstile di Situs yang Sama
- Deep Dive reCAPTCHA Enterprise Assessment API