Smart Signals הם אותות העשרה בצד השרת המחושבים מטביעות אצבע של דפדפן, מודיעין IP וניתוח התנהגותי. הם מספקים הקשר עמוק על כל מבקר מבלי לאסוף מידע המזהה אישית.
Smart Signals — אותות ההחלטה, הסיכון, הרשת והבוטים המועשרים — מגיעים לשרת שלכם בשתי דרכים: הם נדחפים אליכם כ-webhooks (ראו Webhooks), וניתן לקרוא אותם לפי דרישה דרך Data API. בנוסף הם מוצגים בלוח הבקרה. הדוגמאות שלהלן צורכות את מבנה מטען ה-webhook; אותם שדות עצמם מופיעים בקריאת סשן מה-API.
ביקור בודד מתפענח ל-35+ smart signals בתחומי הרשת, הדפדפן, המכשיר וניתוח ההתנהגות. המדריך שלהלן מונה את אלה שתזדקקו להם לרוב, ובהם:
| Signal | תיאור | Response | פלטפורמה |
|---|---|---|---|
| VPN Detection | מסמן שימוש ב-VPN על סמך מודיעין IP | network.vpn: boolean | Web |
| Proxy Detection | מזהה שימוש בפרוקסי מרכזי נתונים ופרוקסי מגורים | network.proxy: boolean | Web |
| Tor Detection | משווה את ה-IP מול צמתי יציאה ידועים של Tor | network.tor: boolean | Web |
| Datacenter | מסמן כתובות IP השייכות לספקי ענן/אירוח ידועים | network.datacenter: boolean | Web |
| IP Geolocation | מיקום גיאוגרפי ברמת עיר + ISP ו-ASN מכתובת ה-IP | geo.{ country, city, timezone }, network.{ isp, asn } | Web |
| Signal | תיאור | Response | זמינות |
|---|---|---|---|
| Browser Tampering | מזהה זיוף User-Agent, שינוי navigator, הזרקת הרחבות | { result: boolean, anomalyScore: number } | Web |
| Antidetect Browsers | מנקד גרסאות דפדפן המזייפות טביעת אצבע באמצעות בדיקות CSS ו-property | bot.antidetectScore: number (0–100, Pro+) | Web |
| Privacy Settings | מזהה תצורות דפדפן ממוקדות פרטיות (Tor Browser, Brave, Firefox ETP, Safari ITP) | { result: boolean } | Web |
| Developer Tools | מזהה מתי כלי המפתחים של הדפדפן פתוחים | { result: boolean } | Web — Business & Enterprise |
| Incognito | מסיק גלישה פרטית ב-Chromium, ב-Firefox וב-Safari | identification.incognito: boolean | Web |
| Signal | תיאור | זמינות |
|---|---|---|
| Emulator | מזהה אמולטורים של Android (BlueStacks, Genymotion, Nox, Android SDK) דרך GPU renderer וסמני UA | Web — כל התוכניות |
זיהויים המוגבלים לפלטפורמה נייטיב. זיהוי Root, jailbreak, אפליקציה משוכפלת/כפולה ואינסטרומנטציה של Frida תלויים באותות שרק SDK נייטיב לנייד יכול לאסוף. TRACIO מספקת ערכות SDK לדפדפן, ולכן זיהויים אלה אינם אפקטיביים בסוכן ה-web — הסתמכו במקומם על פסקי הדין של אוטומציה, headless, antidetect, אמולטור והתנהגות.
| Signal | תיאור | Response | פלטפורמה |
|---|---|---|---|
| Bot Detection | מזהה מסגרות אוטומציה ודפדפנים headless | bot.result: "human"|"bot"|"uncertain", bot.type: string, bot.score: number | Web |
| Risk Score | סיכון מצטבר לבקשה, על אובייקט ה-webhook decision | decision.riskScore: number, decision.suspectScore: number, decision.action: "real"|"fake"|"suspicious" | Web |
דגלי VPN, פרוקסי, Tor ומרכז נתונים נפתרים בצד השרת מכתובת ה-IP של המבקר
באמצעות מסדי נתונים מסחריים של מודיעין IP (IP2Location / MaxMind). מטען
ה-webhook הציבורי חושף את התוצאות המשולבות כערכים בוליאניים על אובייקט
ה-network — network.vpn, network.proxy, network.tor,
network.datacenter — ללא פירוט לפי שיטה או מחרוזת ביטחון. ראו
IP Intelligence לפרטים.
גלישה פרטית מוסקת ב-Chromium, ב-Firefox וב-Safari ומגיעה אליכם בשדה
identification.incognito. אין ממשק דפדפן שמדווח עליה, ולכן פסק הדין נוצר מהצבעה
משוקללת על אופן ההתנהגות של האחסון בחלון פרטי — שגיאות של origin private file
system, עמידות האחסון ומאפיינים ייחודיים לכל פלטפורמה, וכל אחד מהם תורם את חלקו.
זהו אות הסתברותי ולא ודאות: התייחסו אליו כאל אחד מכמה קלטים, ולא כאל עובדה שאפשר
לפעול לפיה לבדה. מכיוון שחלונות פרטיים גם מונעים את העוגייה _vid_t, ביקור בגלישה
פרטית מזוהה מהאותות בלבד, וערך ה-identification.confidence שלו נמוך בהתאם.
גלאי השיבוש (tampering) מזהה מבקרים ששינו את הדפדפן שלהם כדי להציג מצג שווא של זהותם:
navigator באמצעות השוואת אבות-טיפוס של getterPluginArray.prototype ו-MimeType.prototypeFunction.prototype.toString, Object.getOwnPropertyDescriptor ופונקציות קריטיות אחרות הוחלפו ב-Proxiesה-anomalyScore (0.0-1.0) מכמת את מידת חוסר העקביות. ערכים מעל 0.5 מצביעים על שיבוש משמעותי.
אובייקט ה-webhook decision נושא את הסיכון המצטבר לבקשה:
decision.riskScore (מספר שלם 0-100), decision.suspectScore (מספר) ו-
decision.action (הפעולה המומלצת). הציון מצרף את פלטי ה-smart signals;
הטווחים שלהלן מתארים כיצד riskScore ממופה לרמות סיכון:
| טווח ציון | רמת סיכון | אינדיקטורים אופייניים |
|---|---|---|
| 0-10 | רגיל | אותות נקיים, מבקר מוכר, IP מגורים |
| 11-30 | נמוך | חוסר עקביות קל, IP של מרכז נתונים, או ביקור ראשון |
| 31-60 | בינוני | זוהה VPN, שיבוש דפדפן, או קצב חריג |
| 61-80 | גבוה | אותות סיכון מרובים, פרוקסי + שיבוש, פעילות גבוהה |
| 81-100 | קריטי | זוהה בוט, צומת יציאה של Tor, או אנומליות חמורות |
הציון מצרף את פלטי ה-smart signal הפעילים — בעיקר מודיעין IP (VPN/פרוקסי/Tor/מרכז נתונים), פסק הדין על בוט ושיבוש דפדפן. אינטראקציה אנושית מאומתת (עכבר/מקלדת) מורידה את הציון.
ארבע תצורות דפדפן ממוקדות פרטיות מזוהות:
| Browser | שיטת זיהוי | סף |
|---|---|---|
| Tor Browser | Canvas חסום + WebGL חסום + אזור זמן UTC + גופנים מוגבלים + גודל מסך מעוגל | 3+ סמנים |
| Brave | UA של Brave או navigator.brave או מותג "Brave" ב-Client Hints | סמן 1+ |
| Firefox ETP (strict) | אחסון מחולק למחיצות או Canvas מנוגד (נדרש UA של Firefox) | סמן 1+ |
| Safari ITP | Cookies חסומים או IndexedDB מוגבל (נדרש UA של Safari) | סמן 1+ |
Smart Signals מגיעים לשרת שלכם דרך מטען ה-webhook (ראו Webhooks למבנה המלא ולאימות החתימה) וגם בקריאת סשן מ-Server API. הדוגמאות שלהלן קוראות את השדות ישירות מתוך מטען ה-webhook; שמות השדות זהים בשני המקרים.
// `payload` is the webhook delivery body (/docs/webhooks)const score = payload.decision.riskScoreconst isVPN = payload.network.vpnconst isBot = payload.bot.result === "bot"
if (isBot) { return block("Automated access")}
if (score > 60) { return requireMFA()}
if (isVPN && score > 30) { return requireCaptcha()}
return allow()// `payload` is the webhook delivery body (/docs/webhooks)function computeFraudRisk(payload: WebhookPayload): string { let risk = "low"
if (payload.decision.riskScore > 60) risk = "high" else if (payload.decision.riskScore > 30) risk = "medium"
// Escalate when multiple network signals agree if (payload.network.vpn && payload.network.proxy) risk = "high" if (payload.network.tor) risk = "high" if (payload.bot.result === "bot") risk = "high"
return risk}