Spam Blocker
स्पैम अवरोधक एक केंद्रीकृत स्पैम पहचान सेवा है जो आने वाले प्रकाशनों का मूल्यांकन करती है और जोखिम स्कोर प्रदान करती है। इसमें दो पैकेज शामिल हैं:
@bitsocial/spam-blocker-server-- HTTP सर्वर जो मूल्यांकन और चुनौती एपीआई को होस्ट करता है।@bitsocial/spam-blocker-challenge-- एक हल्का क्लाइंट पैकेज जिसे समुदाय मूल्यांकन के लिए प्रकाशन भेजने के लिए एकीकृत करते हैं।
स्रोत कोड: github.com/bitsocialnet/spam-blocker
जोखिम स्कोरिंग कैसे काम करती है
/evaluate समापन बिंदु पर सबमिट किए गए प्रत्येक प्रकाशन को एक संख्यात्मक जोखिम स्कोर प्राप्त होता है। स्कोर कई संकेतों का एक भारित संयोजन है:
| सिग्नल | विवरण |
|---|---|
| खाता आयु | नए खातों को उच्च जोखिम स्कोर प्राप्त होता है। |
| कर्म | संचित सामुदायिक कर्म जोखिम को कम करता है। |
| लेखक प्रतिष्ठा | बैकग्राउंड नेटवर्क इंडेक्सर द्वारा एकत्र किया गया प्रतिष्ठा डेटा। |
| सामग्री विश्लेषण | पाठ-स्तरीय अनुमान (लिंक घनत्व, ज्ञात स्पैम पैटर्न, आदि)। |
| वेग | एक ही लेखक की तेजी से लगातार पोस्ट करने से जोखिम बढ़ जाता है। |
| आईपी इंटेलिजेंस | देश-स्तरीय जियोलोकेशन और खतरा-फ़ीड लुकअप। केवल देश कोड संग्रहीत किए जाते हैं - कच्चे आईपी पते कभी भी समुदायों के साथ साझा नहीं किए जाते हैं। |
स्तरीय सीमाएँ
जोखिम स्कोर चार विन्यास योग्य स्तरों में से एक पर मैप होता है जो निर्धारित करता है कि आगे क्या होता है:
- स्वतः स्वीकार -- स्कोर इतना कम है कि प्रकाशन बिना किसी चुनौती के स्वीकृत हो जाता है।
- OAuth-पर्याप्त -- लेखक को आगे बढ़ने के लिए OAuth सत्यापन पूरा करना होगा।
- OAuth-plus-more -- अकेले OAuth पर्याप्त नहीं है; अतिरिक्त सत्यापन (जैसे, कैप्चा) आवश्यक है।
- स्वतः-अस्वीकार -- स्कोर बहुत अधिक है; प्रकाशन को सिरे से खारिज किया जाता है।
सभी थ्रेशोल्ड मान प्रति समुदाय कॉन्फ़िगर करने योग्य हैं।
चुनौती प्रवाह
जब कोई प्रकाशन उस स्तर में आता है जिसके लिए सत्यापन की आवश्यकता होती है, तो चुनौती प्रवाह शुरू होता है:
- लेखक को सबसे पहले OAuth (GitHub, Google, Twitter और अन्य समर्थित प्रदाताओं) के माध्यम से प्रमाणित करने के लिए प्रेरित किया जाता है।
- यदि केवल OAuth अपर्याप्त है (टियर 3), तो क्लाउडफ्लेयर टर्नस्टाइल द्वारा संचालित कैप्चा फ़ॉलबैक प्रस्तुत किया जाता है।
- OAuth पहचान का उपयोग केवल सत्यापन के लिए किया जाता है - इसे समुदाय या अन्य उपयोगकर्ताओं के साथ कभी भी साझा नहीं किया जाता है।
एपीआई समापन बिंदु
POST /evaluate
जोखिम मूल्यांकन के लिए एक प्रकाशन सबमिट करें. परिकलित जोखिम स्कोर और आवश्यक चुनौती स्तर लौटाता है।
POST /challenge/verify
सत्यापन के लिए पूर्ण चुनौती का परिणाम (OAuth टोकन, कैप्चा समाधान, या दोनों) सबमिट करें।
GET /iframe/:sessionId
एक एम्बेड करने योग्य HTML पृष्ठ लौटाता है जो दिए गए सत्र के लिए उपयुक्त चुनौती यूआई प्रस्तुत करता है।
दर सीमित करना
लेखक की उम्र और प्रतिष्ठा के आधार पर दर सीमाएँ गतिशील रूप से लागू की जाती हैं। नए या निम्न-प्रतिष्ठित लेखकों को सख्त सीमाओं का सामना करना पड़ता है, जबकि स्थापित लेखकों को अधिक उदार सीमाओं का आनंद मिलता है। यह विश्वसनीय प्रतिभागियों को दंडित किए बिना स्पैम बाढ़ को रोकता है।
बैकग्राउंड नेटवर्क इंडेक्सर
सर्वर एक बैकग्राउंड इंडेक्सर चलाता है जो लेखक प्रतिष्ठा डेटा बनाने और बनाए रखने के लिए नेटवर्क को लगातार क्रॉल करता है। यह डेटा सीधे जोखिम स्कोरिंग पाइपलाइन में फीड होता है, जिससे सिस्टम को समुदायों में बार-बार सद्भावना वाले प्रतिभागियों को पहचानने की अनुमति मिलती है।
गोपनीयता
स्पैम अवरोधक गोपनीयता को ध्यान में रखकर बनाया गया है:
- OAuth पहचान का उपयोग केवल चुनौती सत्यापन के लिए किया जाता है और इसे समुदायों के सामने कभी प्रकट नहीं किया जाता है।
- आईपी पते का समाधान केवल देश कोड के लिए किया जाता है; कच्चे आईपी संग्रहीत या साझा नहीं किए जाते हैं।
डेटाबेस
प्रतिष्ठा डेटा, सत्र स्थिति और कॉन्फ़िगरेशन की स्थानीय दृढ़ता के लिए सर्वर SQLite (better-sqlite3 के माध्यम से) का उपयोग करता है।