Web sitenizi spam yorumlardan, sahte üyeliklerden ve brute-force saldırılarından korumanın en etkili yolu. Google reCAPTCHA, gelişmiş risk analizi motoru ile gerçek kullanıcıları botlardan ayırt eder.
Bu rehberde; klasik "Ben robot değilim" (v2) kutucuğu ve tamamen görünmez olan Puan Bazlı (v3) sistemin farklarını, PHP ile nasıl entegre edileceğini ve en iyi güvenlik pratiklerini bulacaksınız.
reCAPTCHA
Privacy - Terms
İletişim formlarını ve yorum alanlarını temiz tutun.
v3 ile kullanıcıları bulmaca çözmekten kurtarın.
PHP, JS ve HTML ile dakikalar içinde kurulum.
Google'ın gelişmiş risk analiz motorunu kullanır.
Web siteleri her gün milyonlarca bot saldırısına maruz kalır. Bu botlar; iletişim formlarını spam mesajlarla doldurabilir, üyelik sistemlerine sahte kayıtlar açabilir, şifre deneme saldırıları (brute-force) yapabilir veya içeriklerinizi çalabilir (scraping).
Google reCAPTCHA, milyarlarca işlemi analiz ederek sitenizi bu tehditlere karşı korur. Kullanıcı deneyimini bozmadan, arka planda çalışan gelişmiş algoritmalarla "insan" ve "robot" ayrımını mükemmel şekilde yapar.
İki sürüm arasındaki temel farklar ve kullanım alanları
Kullanıcının "Ben robot değilim" kutucuğunu işaretlemesini ister. Şüpheli durumlarda resim seçme bulmacası çıkarır.
Kullanıcı hiçbir şey yapmaz. Arka planda çalışır ve kullanıcıya 0.0 ile 1.0 arasında bir "Puan" (Score) verir.
Google Admin Console üzerinden sitenizi kaydedin
Google reCAPTCHA Admin paneline gidin ve "+" butonuna basarak yeni site ekleyin.
Etiket (Label) girin. "reCAPTCHA type" kısmından v2 (Challenge) veya v3 (Score based) seçin. Genellikle v2 "I'm not a robot" checkbox en yaygın olanıdır.
"Domains" kısmına sitenizin adresini (örn: ekasunucu.com) ve test için localhost ekleyin.
Size iki anahtar verilecektir:
Sitenize reCAPTCHA eklemek için aşağıdaki kodları kullanın
<html>
<head>
<!-- Google API Scriptini Ekleyin -->
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<form action="kontrol.php" method="POST">
<input type="text" name="adsoyad" placeholder="Adınız" required><br>
<input type="email" name="email" placeholder="E-posta" required><br>
<!-- reCAPTCHA Kutucuğu -->
<!-- data-sitekey kısmına Google'dan aldığınız Site Key'i yazın -->
<div class="g-recaptcha" data-sitekey="SITE_KEY_BURAYA"></div>
<br>
<input type="submit" value="Gönder">
</form>
</body>
</html>
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Formdan gelen recaptcha verisi
$recaptcha_response = $_POST['g-recaptcha-response'];
// Google'dan aldığınız GİZLİ ANAHTAR (Secret Key)
$secret_key = "SECRET_KEY_BURAYA";
// Doğrulama URL'si
$verify_url = "https://www.google.com/recaptcha/api/siteverify";
// POST verisi hazırlama
$data = [
'secret' => $secret_key,
'response' => $recaptcha_response,
'remoteip' => $_SERVER['REMOTE_ADDR']
];
// CURL ile Google'a sorma (Daha güvenli ve hızlı)
$ch = curl_init($verify_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
// JSON yanıtı çözme
$result = json_decode($response, true);
if ($result['success']) {
// Doğrulama Başarılı! İşlemleri yapabilirsiniz.
$adsoyad = htmlspecialchars($_POST['adsoyad']);
echo "Teşekkürler $adsoyad, doğrulama başarılı.";
} else {
// Doğrulama Başarısız!
// Hata kodlarını görebilirsiniz: print_r($result['error-codes']);
echo "Lütfen robot olmadığınızı doğrulayın.";
}
}
?>
<script src="https://www.google.com/recaptcha/api.js?render=SITE_KEY_BURAYA"></script>
<script>
function formGonder() {
grecaptcha.ready(function() {
// 'submit' aksiyonu için token al
grecaptcha.execute('SITE_KEY_BURAYA', {action: 'submit'}).then(function(token) {
// Token'ı gizli inputa yaz ve formu gönder
document.getElementById('g-recaptcha-response').value = token;
document.getElementById('myForm').submit();
});
});
}
</script>
<form id="myForm" action="kontrol_v3.php" method="POST">
<input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response">
<!-- Diğer inputlar -->
<button type="button" onclick="formGonder()">Gönder</button>
</form>
* v3 PHP tarafında ayrıca $result['score'] kontrolü yapılmalıdır (Örn: score > 0.5 ise kabul et).
Eka Sunucu ekibi ile sitenizi botlara karşı zırhlayın
Eka Sunucu'dan hosting veya VDS hizmeti alan müşterilerimize temel kurulum desteği.
Özel yazılım projeleriniz, PHP scriptleriniz veya kurumsal sistemleriniz için profesyonel v3 entegrasyonu.
reCAPTCHA entegrasyonu hakkında teknik detaylar
Hayır, Google reCAPTCHA standart sürümü ayda 1 milyon işleme kadar tamamen ücretsizdir. Bu limit çoğu web sitesi için fazlasıyla yeterlidir. Çok yüksek trafikli siteler için Enterprise sürümü mevcuttur.
Evet, reCAPTCHA localhost üzerinde çalışır. Admin panelinden domain eklerken localhost veya 127.0.0.1 yazarak test ortamında geliştirmelerinizi yapabilirsiniz.
Bu hata, reCAPTCHA kodunu çalıştırdığınız web sitesinin domain adresinin (örn: ekasunucu.com), Google Admin panelindeki "Domains" listesine eklenmediğini gösterir. Paneli kontrol edip domaininizi ekleyin.
v3, 0.0 ile 1.0 arasında bir puan döndürür. 1.0 kesinlikle insan, 0.0 kesinlikle bot demektir. Genellikle 0.5 puanı eşik değer olarak kullanılır. 0.5'in altındaki işlemleri engelleyebilir veya ek doğrulama isteyebilirsiniz.
Eka Sunucu'nun güvenli hosting altyapısı ve uzman desteği ile sitenizi botlardan koruyun. Hemen sunucu kiralayın, güvenle büyüyün.