Dokümanlar
Hızlı Başlangıç
Bir dakikadan kısa sürede çalışır duruma gelin.
1Bir Site Oluşturun
BenEgeDeniz ID'niz ile giriş yapın ve panelde yeni bir site oluşturarak site anahtarınızı ve gizli anahtarınızı alın.
2Widget'ı Ekleyin
Forge scriptini dahil edin ve widget div'ini formunuzun içine yerleştirin.
<script src="https://forge.benegedeniz.com/widget/forge.js" async defer></script>
<form action="/submit" method="POST">
<div class="forge-captcha" data-sitekey="YOUR_SITEKEY"></div>
<button type="submit">Submit</button>
</form>
3Sunucu Tarafında Doğrulayın
Form gönderildiğinde, token'ı gizli anahtarınızla doğrulama API'mize gönderin.
İstemci Tarafı
Otomatik Oluşturma
Widget, forge-captcha sınıfına sahip tüm elementlerde otomatik olarak oluşturulur.
<div class="forge-captcha" data-sitekey="YOUR_SITEKEY"></div>
JavaScript API
Programatik kontrol için ForgeCaptcha global nesnesini kullanın.
// Programmatic rendering
const widgetId = ForgeCaptcha.render('#my-container', {
sitekey: 'YOUR_SITEKEY',
callback: function(token) {
console.log('Verified:', token);
},
'error-callback': function() {
console.log('Challenge failed');
}
});
// Get the response token
const token = ForgeCaptcha.getResponse(widgetId);
// Reset the widget
ForgeCaptcha.reset(widgetId);
Data Özellikleri
| Özellik | Tip | Açıklama |
|---|---|---|
data-sitekey | string | Sitenizin genel anahtarı (zorunlu). |
data-callback | string | Başarılı olduğunda token ile çağrılan global fonksiyon adı. |
data-error-callback | string | Hata durumunda çağrılan global fonksiyon adı. |
data-theme | string | "light", "dark" veya "auto" (varsayılan: otomatik algılama). |
Drop-In Entegrasyon
BenEgeDeniz Forge, diğer popüler captcha servisleri için %100 uyumlu bir Drop-In alternatifi olarak çalışır. Aşağıdaki servislerden herhangi birini kullanan bir sisteminiz varsa, HTML elementinizi veya sunucu doğrulama değişkenlerinizi değiştirmeden geçiş yapabilirsiniz.
reCaptcha
<div class="g-recaptcha">
Turnstile
<div class="cf-turnstile">
hCaptcha
<div class="h-captcha">
Sunucu Tarafı
Widget bir token oluşturduktan sonra, isteği işlemeden önce sunucunuzda doğrulayın.
PHP
$response = file_get_contents('https://forge.benegedeniz.com/api/siteverify', false,
stream_context_create(['http' => [
'method' => 'POST',
'header' => 'Content-Type: application/json',
'content' => json_encode([
'secret' => 'YOUR_SECRET_KEY',
'response' => $_POST['forge-captcha-response'],
'remoteip' => $_SERVER['REMOTE_ADDR'],
]),
]])
);
$result = json_decode($response, true);
if ($result['success']) {
// User verified - process the form
}
Node.js
const res = await fetch('https://forge.benegedeniz.com/api/siteverify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
secret: process.env.FORGE_SECRET_KEY,
response: req.body['forge-captcha-response'],
}),
});
const data = await res.json();
if (data.success) {
// User verified
}
cURL
curl -X POST https://forge.benegedeniz.com/api/siteverify \
-H "Content-Type: application/json" \
-d '{"secret":"YOUR_SECRET","response":"TOKEN_FROM_WIDGET"}'
API Referansı
/api/challenge
Yeni bir PoW meydan okuması talep edin. Widget tarafından dahili olarak kullanılır.
İstek Gövdesi
{ "sitekey": "your-site-uuid" }
Yanıt
{
"success": true,
"challenge_id": "uuid",
"salt": "hex-string",
"difficulty": 20,
"algorithm": "SHA-256",
"expires_at": "2025-01-01T00:00:00Z"
}
/api/siteverify
Bir captcha token'ını doğrulayın. Gizli anahtarınızla sunucunuzdan çağırın.
İstek Gövdesi
{
"secret": "your-secret-key",
"response": "token-from-widget",
"remoteip": "optional-client-ip"
}
Yanıt
{
"success": true,
"challenge_ts": "2025-01-01T00:00:00+00:00",
"hostname": "example.com"
}
Yapılandırma
Panelden sitenizin zorluk seviyesini yapılandırın.
| Ayar | Varsayılan | Aralık | Açıklama |
|---|---|---|---|
| Zorluk | 20 | 10–28 | SHA-256 hash'inde gereken ön sıfır bit sayısı. Yüksek değerler = daha zor meydan okumalar. |
- 10–14: Çok hafif koruma (~10ms). Düşük riskli formlar için uygun.
- 15–20: Dengeli koruma (~200-500ms). Çoğu kullanım için önerilir.
- 21–28: Ağır koruma (~2-30s). Yüksek güvenlikli veya hız sınırlı uç noktalar için.