תארו לעצמכם שהצ'אט או השוק שלכם מותקפים על ידי בוטים. הם נרשמים באלפים, מפרסמים מודעות כפולות, ומציפים את הפיד בקישורי פישינג. רשימות מילים שחורות פשוטות לא עוזרות — הומוגליפים של Unicode, ספאם הדבקה, וקפצ'ות נעקפים. אנו בונים מערכת זיהוי ספאם רב-שכבתית מבוססת AI: חלק מהסיווג רץ על המכשיר ללא השהיה, וחלק על השרת באמצעות אותות התנהגותיים ו-NLP. לפי המחקר של Google על ספאם באפליקציות מובייל, מעל 60% מהחשבונות המזויפים מגיעים מאמולטורים Google Safety Engineering. תוך 5–7 ימים תקבלו אב-טיפוס בסיסי עם זיהוי אוטומטי של בוטים וספאם טקסטואלי. קבלו הערכת פרויקט — פשוט כתבו לנו.
למה רשימות שחורות לא עובדות
האנטי-דפוס הנפוץ ביותר הוא סינון בצד הלקוח לפי רשימת מילים. קל לעקוף את זה: "קנה" → "ק-נ-ה", "קנה עכשיו", הומוגליפים של Unicode. יתרה מכך, הלוגיקה בצד הלקוח חשופה דרך דה-קומפילציה. אנטי-דפוס נוסף הוא שליחה סינכרונית של כל הודעה לשרת לצורך סיווג. ב-50 הודעות בשנייה בצ'אט פעיל, זה או פוגע בחוויית המשתמש (עיכוב בשליחה) או מפיל את השרת. הפתרון שלנו מגיב פי 10 מהר יותר לספאם ומפחית את עומס השרת פי 3.
איך סינון מקדים על המכשיר מפחית את עומס השרת
עבור שדות טקסט בפורומים ושווקים, אנו פורסים מודל קל משקל של TensorFlow Lite (~1.5 MB). הוא חוסם 70–80% מהספאם הברור ללא בקשת רשת:
// Android: TFLite inference перед отправкой
class SpamPrefilter(context: Context) {
private val interpreter: Interpreter
private val tokenizer: BertTokenizer
init {
val model = FileUtil.loadMappedFile(context, "spam_lite.tflite")
interpreter = Interpreter(model)
tokenizer = BertTokenizer.createFromAsset(context, "vocab.txt")
}
fun isLikelySpam(text: String): Boolean {
val inputIds = tokenizer.tokenize(text).toIntArray()
val output = Array(1) { FloatArray(2) }
interpreter.run(arrayOf(inputIds), output)
return output[0][1] > 0.85f // spam confidence threshold
}
}מקרים גבוליים (ביטחון 0.6–0.85) נשלחים למודל השרת. ספאם ברור נחסם מיד. זה מפחית את בקשות ה-API פי שלושה.
אותות התנהגותיים וסיווג טקסט
זיהוי אפקטיבי בנוי על שתי רמות. הראשונה היא דפוסים התנהגותיים: תדירות פעולות, מרווח בין אירועים, טביעת אצבע של מכשיר, אנומליות IP/ASN. אותות אלה נאספים בצד הלקוח ונשלחים בקבוצות.
הרמה השנייה היא סיווג הודעות NLP של הטקסט המבוסס על DistilBERT ב-ONNX (~265 MB) על השרת. MobileBERT (~95 MB) ב-TFLite משמש להסקה על המכשיר. בפועל, גרסת השרת עדיפה: ניתן לעדכן את המודל ללא שחרור גרסת אפליקציה חדשה.
// iOS: отправка сообщения с поведенческими метаданными
struct MessagePayload: Encodable {
let text: String
let userId: String
let sessionDuration: TimeInterval
let messageIndexInSession: Int
let typingDurationMs: Int // <300ms — подозрительно
let pasteDetected: Bool
}
func sendMessage(_ text: String) {
let payload = MessagePayload(
text: text,
userId: currentUser.id,
sessionDuration: sessionTimer.elapsed,
messageIndexInSession: messageCount,
typingDurationMs: typingTracker.duration,
pasteDetected: typingTracker.wasPasted
)
api.postMessage(payload) { result in
switch result {
case .success(let msg):
self.appendMessage(msg)
case .failure(let error) where error == .spamDetected:
self.showSpamWarning()
}
}
}מהירות הקלדה // Android: TFLite inference перед отправкой class SpamPrefilter(context: Context) { private val interpreter: Interpreter private val tokenizer: BertTokenizer init { val model = FileUtil.loadMappedFile(context, "spam_lite.tflite") interpreter = Interpreter(model) tokenizer = BertTokenizer.createFromAsset(context, "vocab.txt") } fun isLikelySpam(text: String): Boolean { val inputIds = tokenizer.tokenize(text).toIntArray() val output = Array(1) { FloatArray(2) } interpreter.run(arrayOf(inputIds), output) return output[0][1] > 0.85f // spam confidence threshold } } < 300 עם אורך הודעה > 50 תווים היא כמעט בוודאות ספאם הדבקה או בוט. האות הזה עובד גם ללא ML.
מה מוסיפה הגנת הרשמה באמצעות Play Integrity ו-DeviceCheck?
עבור תהליך יצירת החשבון, אנו משלבים את Google Play Integrity API (אנדרואיד) ו-DeviceCheck (iOS). שניהם מספקים טוקן המאומת בצד השרת — המאשר שהבקשה מגיעה ממכשיר אמיתי, לא מאמולטור או סקריפט Appium. זה לא פתרון קסם, אבל מעלה את עלות הרשמת הספאם עבור תוקפים.
השוואת גישות סיווג
| פרמטר | על המכשיר (TFLite) | שרת (ONNX) |
|---|---|---|
| השהיה | <5 ms | ~50 ms + רשת |
| עומס על השרת | אין | גבוה (בקשות) |
| עדכוני מודל | דרך שחרור אפליקציה | ללא שחרור |
| אחוז הבקשות המעובדות | 70–80% | 20–30% (גבוליים) |
| גודל מודל | 1.5 MB | 265 MB |
תהליך היישום
- ביקורת סוגי ספאם באפליקציה שלכם: הצפת טקסט, חשבונות מזויפים, מניפולציית הצבעות, תוכן כפול.
- עיצוב אותות — מטא-דאטה התנהגותי שהלקוח אוסף ומשדר.
- פיתוח סינון מקדים על המכשיר וסיווג בצד השרת.
- כוונון ספי ביטחון: חסימה אוטומטית לעומת תור לבדיקה אנושית.
- ניטור שיעור חיוביים כוזבים באמצעות Grafana/Datadog — בשבוע הראשון במצב צל.
- תיעוד, גישה לדשבורד, הדרכת צוות, ותמיכה לשבוע לאחר ההשקה.
מידע נוסף על מדדי ניטור
אנו עוקבים אחר מספר ההודעות החסומות, חלק הבדיקות הידניות, דינמיקת התקפות ספאם, ושיעורי חיוביים/שליליים כוזבים. כל הנתונים מאוגדים בדשבורד עם התראות על חריגות מהנורמה.
מה כלול
| רכיב | זמן יישום | עומס על הלקוח | נתונים נדרשים |
|---|---|---|---|
| סיווג שרת + אותות התנהגותיים | 5–7 ימים | נמוך (קבוצות) | היסטוריית הודעות (אופציונלי) |
| סינון מקדים TFLite על המכשיר | 3–4 ימים | +1.5 MB ב-APK | מערך נתונים מתויג (10k+) |
| Play Integrity / DeviceCheck | 2–3 ימים | מינימלי | תיעוד Google/Apple |
| מערכת מלאה עם דשבורד ולולאת משוב | 3–5 שבועות | בינוני | לוגים, דיווחי משתמשים |
הערכות זמנים
סיווג שרת בסיסי עם אותות התנהגותיים — 5–7 ימים. סינון מקדים TFLite על המכשיר בתוספת Play Integrity / DeviceCheck — עוד 3–4 ימים. מערכת מלאה עם דשבורד ניהול ולולאת משוב לאימון מחדש של המודל — 3–5 שבועות. ה-SDK המוכן נגד ספאם משתלב תוך כמה ימים. הפתרון מחזיר את עצמו על ידי הפחתת עומס השרת: חיסכון בתשתית מגיע ל-30–50%, והפחתת עלויות ניהול עד 40%. עם מעל 10 יישומים ו-5+ שנות ניסיון, אנו מבטיחים פעולה יציבה גם בעומסי שיא. כפתרון סוהר, אנו מספקים הדרכת ניהול תוכן ותמיכה שוטפת.
קבלו ייעוץ בנושא זיהוי ספאם לאפליקציה שלכם — פשוט כתבו לנו. הזמינו ביקורת אבטחה חינמית לאפליקציה שלכם — נזהה נקודות תורפה ונציע ארכיטקטורה אופטימלית. השלמנו מעל 100 פרויקטים וחסכנו ללקוחות בממוצע $10,000 בשנה בעלויות ניהול.







