کپچاهای معمول یه مشکل همیشگی دارن: یا کاربر رو با انتخاب عکس و چراغ راهنما اذیت می کنن، یا به یه سرویس خارجی وصلن که از داخل ایران گاهی کند یا ناپایداره. Cap راه دیگه ای رفته. به جای اینکه بپرسه «ربات هستی یا نه»، از مرورگر می خواد یه محاسبه کوچیک انجام بده. @cap.js/wasm همون بخشیه که این محاسبه رو انجام می ده.
ماجرا ساده است. سرور یه چالش می فرسته و مرورگر باید با هش SHA-256 جواب درست رو پیدا کنه. برای کاربر معمولی چند لحظه بیشتر طول نمی کشه و کاربر کاری هم نمی کنه؛ همه چیز پشت صحنه اتفاق می افته. ولی رباتی که می خواد هزاران بار فرم رو پر کنه، هر بار باید همین هزینه رو بده و جمعش سنگین می شه. اسم این روش Proof of Work یا اثبات کاره. بسته @cap.js/wasm محاسبه رو با WebAssembly انجام می ده که معمولا از هش کردن با جاوااسکریپت خالص سریع تره.
این بسته به درد کسی می خوره که کپچای خودمیزبان می خواد و نمی خواد به سرویس بیرونی وابسته باشه؛ مثلا برای فرم ثبت نام، تماس یا ورود سایتی که روی هاست داخلی بالا اومده. ولی اگه دنبال افزونه وردپرسی ای هستی که فقط فعالش کنی، این چیزی نیست که می خوای. این یه کتابخانه جاوااسکریپته، نه افزونه، و فقط یه تکه از مجموعه Cap حساب می شه. برای کار کامل، سرور Cap و ویجتش رو هم لازم داری.
قبل از انتخاب سه چیز رو در نظر بگیر. اثبات کار جادو نیست: مهاجمی که منابع زیادی داره می تونه هزینه محاسبه رو بده، پس برای فرم های حساس محدودیت تعداد درخواست هم بذار. روی گوشی های ضعیف حل چالش ممکنه کمی بیشتر طول بکشه، پس سختی چالش رو با دقت تنظیم کن. مجوز Apache هم معمولا استفاده تجاری رو اجازه می ده، ولی متن مجوز رو یه بار بخون و اطلاعیه ها رو نگه دار. اگه سایتت ترافیک زیادی داره، قبل از انتشار روی یه نمونه آزمایشی ببین سرور Cap زیر بار چطور رفتار می کنه.
نسخه های رسمی و بدون تغییر این بسته توی مخزن داخلی ما هم هست؛ برای روزهایی که دسترسی به npm و اینترنت بین الملل مختل می شه.
راهنمای استفاده
اگه فقط می خوای بسته رو توی یه صفحه امتحان کنی، ساده ترین راه کد آماده پایین همین صفحه است. کدش رو توی صفحه HTML بذار و مطمئن شو فایل ها از مسیر درست بارگذاری می شن. اگه پروژه ات با npm مدیریت می شه، بسته رو با نام @cap.js/wasm بهش اضافه کن.
قدم های کلی کار اینه:
- اول مستندات Cap رو بخون و ببین این بسته توی کدوم قسمت معماری قرار می گیره.
- سمت سرور، Cap رو راه بنداز تا چالش بسازه و جواب ها رو بررسی کنه.
- سمت کاربر، ویجت یا کد خودت رو جوری تنظیم کن که برای حل چالش از این حل کننده WASM استفاده کنه.
- فرم رو تست کن و ببین حل چالش توی مرورگرهای مختلف درست جواب می ده.
- یه بار هم روی یه گوشی معمولی امتحان کن. اگه کند بود، سختی چالش رو کمتر کن.
اگه سایتت وردپرسیه، یادت باشه این بسته افزونه آماده نیست. یه توسعه دهنده باید اون رو توی قالب یا یه افزونه سفارشی وصل کنه و فرم هات رو به سرور Cap ربط بده. بعد از راه اندازی، سرعت پاسخ سرور و لاگ خطاها رو هم نگاه کن تا چالش ها بی دلیل رد نشن.