Spam Blocker
یہ پیکیج اصل میں @plebbit دائرہ کار کے تحت شائع کیا گیا تھا۔ اس کا نام بدل کر @bitsocial/spam-blocker-server اور @bitsocial/spam-blocker-challenge رکھا گیا ہے۔ پرانے ناموں کے حوالے اب بھی پرانی دستاویزات یا کوڈ بیس میں ظاہر ہو سکتے ہیں۔
سپیم بلاکر ایک مرکزی سپیم کا پتہ لگانے کی خدمت ہے جو آنے والی اشاعتوں کا جائزہ لیتی ہے اور رسک سکور تفویض کرتی ہے۔ یہ دو پیکجوں پر مشتمل ہے:
@bitsocial/spam-blocker-server-- HTTP سرور جو تشخیص اور چیلنج APIs کی میزبانی کرتا ہے۔@bitsocial/spam-blocker-challenge-- ایک ہلکا پھلکا کلائنٹ پیکج جسے کمیونٹیز تشخیص کے لیے اشاعتیں بھیجنے کے لیے مربوط کرتی ہیں۔
ماخذ کوڈ: github.com/bitsocialnet/spam-blocker
رسک اسکورنگ کیسے کام کرتی ہے
/evaluate اینڈ پوائنٹ پر جمع کرائی گئی ہر اشاعت کو ایک عددی رسک اسکور ملتا ہے۔ اسکور کئی سگنلز کا وزنی مجموعہ ہے:
| سگنل | تفصیل |
|---|---|
| اکاؤنٹ کی عمر | نئے اکاؤنٹس کو زیادہ خطرے کے اسکور ملتے ہیں۔ |
| کرما | جمع شدہ کمیونٹی کرما خطرے کو کم کرتا ہے۔ |
| مصنف کی ساکھ | بیک گراؤنڈ نیٹ ورک انڈیکسر کے ذریعے جمع کردہ ساکھ کا ڈیٹا۔ |
| مواد کا تجزیہ | ٹیکسٹ لیول ہیورسٹکس (لنک کی کثافت، معلوم سپیم پیٹرن وغیرہ)۔ |
| رفتار | ایک ہی مصنف کی تیزی سے لگاتار پوسٹس خطرے میں اضافہ کرتی ہیں۔ |
| آئی پی انٹیلی جنس | ملکی سطح کے جغرافیائی محل وقوع اور تھریٹ فیڈ کی تلاش۔ صرف ملک کے کوڈز کو محفوظ کیا جاتا ہے -- خام IP پتے کبھی بھی کمیونٹیز کے ساتھ شیئر نہیں کیے جاتے ہیں۔ |
ٹیر تھریشولڈز
رسک سکور کے نقشے چار قابل ترتیب درجات میں سے ایک پر مرتب ہوتے ہیں جو اس بات کا تعین کرتے ہیں کہ آگے کیا ہوتا ہے:
- خودکار قبول -- اسکور اتنا کم ہے کہ اشاعت کو بغیر کسی چیلنج کے منظور کیا جاتا ہے۔
- OAuth-کافی -- مصنف کو آگے بڑھنے کے لیے OAuth کی تصدیق مکمل کرنی ہوگی۔
- OAuth-plus-more -- اکیلا OAuth کافی نہیں ہے۔ اضافی تصدیق (مثلاً کیپچا) درکار ہے۔
- خودکار مسترد -- اسکور بہت زیادہ ہے؛ اشاعت کو یکسر مسترد کر دیا گیا ہے۔
تمام حد کی قدریں فی کمیونٹی کنفیگر کی جا سکتی ہیں۔
چیلنج فلو
جب کوئی اشاعت کسی ایسے درجے میں آتی ہے جس کے لیے توثیق کی ضرورت ہوتی ہے، تو چیلنج کا بہاؤ شروع ہوتا ہے:
- مصنف کو سب سے پہلے OAuth، Twitter، Google سپورٹ اور دیگر کے ذریعے تصدیق کرنے کے لیے کہا جاتا ہے۔ فراہم کنندگان)۔
- اگر اکیلے OAuth ناکافی ہے (ٹائر 3)، Cloudflare Turnstile کے ذریعے تقویت یافتہ CAPTCHA فال بیک پیش کیا جاتا ہے۔
- OAuth شناخت کا استعمال مکمل طور پر تصدیق کے لیے کیا جاتا ہے -- یہ کمیونٹی یا دیگر صارفین کے ساتھ کبھی شیئر نہیں کیا جاتا۔
API اینڈ پوائنٹس
POST /evaluate
خطرے کی تشخیص کے لیے ایک اشاعت جمع کروائیں۔ حسابی رسک سکور اور مطلوبہ چیلنج ٹائر لوٹاتا ہے۔
POST /challenge/verify
تصدیق کے لیے مکمل چیلنج (OAuth ٹوکن، کیپچا حل، یا دونوں) کا نتیجہ جمع کرائیں۔
GET /iframe/:sessionId
ایک سرایت کرنے والا HTML صفحہ لوٹاتا ہے جو دیے گئے سیشن کے لیے مناسب چیلنج UI پیش کرتا ہے۔
شرح کی حد
شرح کی حدیں مصنف کی عمر اور شہرت کی بنیاد پر متحرک طور پر لاگو ہوتی ہیں۔ نئے یا کم شہرت والے مصنفین کو سخت حدود کا سامنا کرنا پڑتا ہے، جبکہ قائم مصنفین زیادہ فراخ دلی سے لطف اندوز ہوتے ہیں۔ یہ قابل اعتماد شرکاء کو جرمانہ کیے بغیر سپیم کے سیلاب کو روکتا ہے۔
بیک گراؤنڈ نیٹ ورک انڈیکسر
سرور ایک بیک گراؤنڈ انڈیکسر چلاتا ہے جو مصنف کی ساکھ کے ڈیٹا کو بنانے اور برقرار رکھنے کے لیے نیٹ ورک کو مسلسل کرال کرتا ہے۔ یہ ڈیٹا براہ راست رسک اسکورنگ پائپ لائن میں فیڈ کرتا ہے، جس سے سسٹم کو کمیونٹیز میں نیک نیتی سے دہرائے جانے والے شرکاء کو پہچاننے کی اجازت ملتی ہے۔
رازداری
اسپام بلاکر کو رازداری کو مدنظر رکھتے ہوئے ڈیزائن کیا گیا ہے:
- OAuth کی شناختیں صرف چیلنج کی تصدیق کے لیے استعمال ہوتی ہیں اور کمیونٹیز کے سامنے کبھی ظاہر نہیں کی جاتیں۔
- IP پتوں کو صرف ملکی کوڈز پر حل کیا جاتا ہے۔ خام IPs کو ذخیرہ یا اشتراک نہیں کیا جاتا ہے۔
ڈیٹا بیس
سرور SQLite (better-sqlite3 کے ذریعے) شہرت کے ڈیٹا، سیشن کی حالت، اور کنفیگریشن کے مقامی استقامت کے لیے استعمال کرتا ہے۔