کپچای رایگان و سازگار با reCAPTCHA
برای سایتهایی که باید در زمان قطعی اینترنت جهانی هم کار کنند.
- بدون کوکیچیزی روی مرورگر بازدیدکننده ذخیره نمیشود.
- بدون ردیابیهیچ پروفایلی از کاربران ساخته نمیشود.
- بدون سرویس خارجیهمهٔ درخواستها به سرور خودتان میرود.
چطور کار میکند؟
سه قدم ساده. بدون پازل تصویری و بدون سرویس خارجی.
-
ویجت را به صفحه اضافه کنید
یک خط اسکریپت و یک تکه HTML بگذارید. همان کدی که برای reCAPTCHA مینویسید.
-
بازدیدکننده تیک میزند
مرورگر او چند ثانیه یک محاسبهٔ کوچک انجام میدهد. لازم نیست عکسی انتخاب کند. بر خلاف گوگل، کوکی هم ندارد.
-
سرور شما پاسخ را بررسی میکند
توکن را به آدرس siteverify بفرستید. wbcp میگوید موفق بود یا نه.
مهاجرت از reCAPTCHA گوگل
اگر از reCAPTCHA v2 استفاده میکنید، فقط آدرسها و کلیدها را عوض کنید. بقیهٔ کد همان میماند.
-
کلید بگیرید
وارد شوید، یک سایت بسازید و دامنهاش را بنویسید. wbcp دو کلید میدهد: کلید سایت (Site key) برای صفحه و کلید خصوصی (Secret) برای سرور. کلید خصوصی فقط یک بار نشان داده میشود، پس همان لحظه آن را نگه دارید.
-
آدرس اسکریپت را در صفحه عوض کنید
آدرس گوگل را با آدرس wbcp عوض کنید و کلید سایت را بگذارید.
<script src="https://www.google.com/recaptcha/api.js" async defer></script><script src="https://wbcp.ir/recaptcha/api.js" async defer></script><div class="g-recaptcha" data-sitekey="SITE_KEY"></div>
-
پاسخ را در سرور بررسی کنید
این قدم در سرور شما انجام میشود، نه در مرورگر. وقتی فرم ارسال میشود، مرورگر مقدار
g-recaptcha-responseرا همراه فرم میفرستد. کدی که فرم را دریافت میکند (مثلاً ثبتنام یا تماس) باید پیش از ذخیره یا ارسال، این مقدار را از wbcp بپرسد. اگر جوابsuccessنبود، فرم را رد کنید.اگر کد گوگل را از قبل دارید، فقط آدرس و کلید خصوصی را عوض کنید:
POST https://www.google.com/recaptcha/api/siteverifyPOST https://wbcp.ir/recaptcha/api/siteverifysecret=SECRET&response=TOKEN
اگر ندارید، یکی از این نمونهها را در همان فایلی بگذارید که فرم را پردازش میکند. کلید خصوصی را هرگز در صفحه یا جاوااسکریپت نگذارید.
PHP
$token = $_POST['g-recaptcha-response'] ?? ''; $body = http_build_query(['secret' => 'SECRET', 'response' => $token]); $reply = file_get_contents('https://wbcp.ir/recaptcha/api/siteverify', false, stream_context_create([ 'http' => [ 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => $body, ], ])); if (! (json_decode($reply, true)['success'] ?? false)) { http_response_code(422); exit('تایید کپچا ناموفق بود.'); } // اینجا فرم را ذخیره یا ارسال کنیدNode.js
const token = req.body['g-recaptcha-response']; const reply = await fetch('https://wbcp.ir/recaptcha/api/siteverify', { method: 'POST', body: new https://wbcp.irSearchParams({ secret: 'SECRET', response: token }), }); const { success } = await reply.json(); if (!success) { return res.status(422).send('تایید کپچا ناموفق بود.'); } // اینجا فرم را ذخیره یا ارسال کنیدPython
import requests token = request.form['g-recaptcha-response'] reply = requests.post('https://wbcp.ir/recaptcha/api/siteverify', data={'secret': 'SECRET', 'response': token}) if not reply.json().get('success'): return 'تایید کپچا ناموفق بود.', 422 # اینجا فرم را ذخیره یا ارسال کنیدASP.NET Core (C#)
string token = Request.Form["g-recaptcha-response"].ToString(); using var http = new HttpClient(); var reply = await http.PostAsync("https://wbcp.ir/recaptcha/api/siteverify", new FormUrlEncodedContent(new Dictionary<string, string> { ["secret"] = "SECRET", ["response"] = token, })); using var json = JsonDocument.Parse(await reply.Content.ReadAsStringAsync()); if (!json.RootElement.GetProperty("success").GetBoolean()) { return BadRequest("تایید کپچا ناموفق بود."); } // اینجا فرم را ذخیره یا ارسال کنیدپاسخ wbcp این شکل است:
{ "success": true, "challenge_ts": "…", "hostname": "example.ir" } -
امتحان کنید
فرم را باز کنید، تیک بزنید و ارسال کنید. اگر
successبرابرtrueبود، کار تمام است. هنگام توسعه در تنظیمات سایت «اجازهٔ localhost» را روشن کنید.
همان میماند
g-recaptcha، data-sitekey، data-callback، grecaptcha.render و reset، فیلد g-recaptcha-response، و حالت چکباکس و نامرئی.
پشتیبانی نمیشود
reCAPTCHA v3 (امتیاز)، نسخهٔ Enterprise و چالش تصویری. اگر سایت شما از اینها استفاده میکند، مهاجرت ممکن نیست.