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