דלג לתוכן הראשי

חוסם דואר זבל

חוסם דואר זבל הוא שירות זיהוי דואר זבל מרכזי שמעריך פרסומים נכנסים ומקצה ציוני סיכון. הוא מורכב משתי חבילות:

  • @bitsocial/spam-blocker-server -- שרת ה-HTTP המארח את ממשקי ה-API של הערכה ואתגר.
  • @bitsocial/spam-blocker-challenge - חבילת לקוח קלת משקל שקהילות משלבות כדי לשלוח פרסומים להערכה.

קוד מקור: github.com/bitsocialnet/spam-blocker

כיצד פועל ציון הסיכון

כל פרסום שנשלח לנקודת הקצה /evaluate מקבל ציון סיכון מספרי. הציון הוא שילוב משוקלל של מספר אותות:

אותתיאור
גיל חשבוןחשבונות חדשים יותר מקבלים ציוני סיכון גבוהים יותר.
קארמהקארמה קהילתית מצטברת מפחיתה סיכון.
מוניטין מחברנתוני מוניטין שנאספו על ידי אינדקס רשת הרקע.
ניתוח תוכןהיוריסטיות ברמת הטקסט (צפיפות קישור, דפוסי ספאם ידועים וכו').
מהירותפוסטים רצופים במהירות מאותו מחבר מגדילים את הסיכון.
מודיעין IPמיקום גיאוגרפי ברמת המדינה וחיפושי הזנת איומים. רק קודי מדינה מאוחסנים -- כתובות IP גולמיות לעולם אינן משותפות עם קהילות.

ספי שכבה

ציון הסיכון ממפה לאחת מארבע שכבות הניתנות להגדרה שקובעות מה יקרה אחר כך:

  1. קבלה אוטומטית -- הציון נמוך מספיק כדי שהפרסום יאושר ללא כל אתגר.
  2. מספיק בOAuth -- על המחבר להשלים אימות OAuth כדי להמשיך.
  3. OAuth-plus-more -- OAuth לבדו אינו מספיק; נדרש אימות נוסף (למשל, CAPTCHA).
  4. דחייה אוטומטית -- הציון גבוה מדי; הפרסום נדחה על הסף.

כל ערכי הסף ניתנים להגדרה לכל קהילה.

זרימת אתגר

כאשר פרסום נופל לשכבה הדורשת אימות, זרימת האתגר מתחילה:

  1. המחבר מתבקש תחילה לבצע אימות באמצעות OAuth (GitHub, Google, Twitter וספקים נתמכים אחרים).
  2. אם OAuth לבדו אינו מספיק (רמה 3), מוצגת CAPTCHA fallback המופעל על ידי Cloudflare Turnstile.
  3. זהות OAuth משמשת אך ורק לאימות -- היא לעולם לא משותפת עם הקהילה או משתמשים אחרים.

נקודות קצה של API

POST /evaluate

שלח פרסום להערכת סיכונים. מחזירה את ציון הסיכון המחושב ואת רובד האתגר הנדרש.

POST /challenge/verify

שלח את התוצאה של אתגר שהושלם (אסימון OAuth, פתרון CAPTCHA או שניהם) לאימות.

GET /iframe/:sessionId

מחזירה דף HTML שניתן להטמעה המציג את ממשק המשתמש האתגרי המתאים להפעלה הנתונה.

הגבלת תעריפים

מגבלות התעריפים מיושמות באופן דינמי על סמך גיל המחבר והמוניטין. מחברים חדשים יותר או בעלי מוניטין נמוך יותר עומדים בפני מגבלות מחמירות, בעוד שמחברים מבוססים נהנים מסף נדיב יותר. זה מונע הצפות ספאם מבלי להעניש משתתפים מהימנים.

אינדקס רשת רקע

השרת מפעיל אינדקס רקע שסורק ברציפות את הרשת כדי לבנות ולתחזק נתוני מוניטין של המחבר. נתונים אלה מוזנים ישירות לצינור ניקוד הסיכון, ומאפשרים למערכת לזהות משתתפים חוזרים בתום לב בקהילות.

פרטיות

חוסם דואר זבל תוכנן תוך מחשבה על פרטיות:

  • זהויות OAuth משמשות רק לאימות אתגר ולעולם לא נחשפות לקהילות.
  • כתובות IP מסודרות ל-קודי מדינה בלבד; כתובות IP גולמיות אינן מאוחסנות או משותפות.

מסד נתונים

השרת משתמש ב-SQLite (באמצעות better-sqlite3) עבור התמדה מקומית של נתוני מוניטין, מצב הפעלה ותצורה.