דלג לתוכן
אספקת נתונים

הנתונים שלכם, במקום שבו אתם מחליטים

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

שני ערוצים

דחיפה או משיכה

webhooks דוחפים אליכם אירועים ברגע שהם קורים. Data API מאפשר לכם לשאול ברגע שאתם צריכים תשובה. רוב הצוותים מריצים את שניהם: webhooks כדי לתעד ולהגיב, ו-Data API לבדיקה בתוך הזרימה.

דחיפה עם webhooks — בזמן אמת

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

הכי מתאים ל: תיעוד כל ביקור, תגובה למתקפות, הזנת מחסן הנתונים או ה-SIEM שלכם.

זמן מסירה p50 של 44–140ms, מהאירוע ועד נקודת הקצה שלכם.

משיכה עם Data API — לפי דרישה

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

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

זמין מתוכנית Pro ומעלה.

webhooks

ארבעה סוגי אירועים, מעטפת אחת

כל מסירה מגיעה באותה מעטפת, כשסוג האירוע מופיע גם בגוף וגם בכותרת X-Tracio-Event-Type — כך שמטפל אחד יכול לנתב את כל הארבעה.

מבקר זוהה

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

identification

השתלטות על חשבון

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

account_takeover

מתקפת בוטים

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

attack_detected

שינוי מוניטין

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

reputation_changed

מסירה, מקוצרת

זהו הגוף הבסיסי. Pro מוסיפה קצב ביקורים; Business מוסיפה קודי סיבה להכרעה, אותות התנהגות, הנחיה ונתוני מכשיר חוצי-דפדפנים לאותה צורה בדיוק — בלוקים חדשים מופיעים, נתיבים קיימים לעולם לא זזים.

JSON
{
"version": 2,
"event": "identification",
"eventId": "req_8f21c4:primary",
"requestId": "req_8f21c4",
"phase": "primary",
"visitorId": "3f9a1b2c4d5e6f70",
"timestamp": "2026-07-30T12:00:00Z",
"geo": { "country": "DE", "city": "Berlin", "timezone": "Europe/Berlin" },
"network": { "vpn": true, "proxy": false, "tor": false, "datacenter": false },
"bot": { "result": "human", "score": 12 },
"identification": { "confidence": 0.97, "incognito": false },
"decision": { "action": "suspicious", "riskScore": 65.9 }
}

כל בקשה נושאת שתי חתימות

הכותרת X-Tracio-Signature היא HMAC-SHA256 על חותמת הזמן של החתימה מחוברת לגוף הבקשה הגולמי, עם מפתח ה-webhook הסודי שלכם — היא מוכיחה שהשולח יודע את הסוד שאתם מחזיקים בו יחד. X-Tracio-Signature-Ed25519 היא חתימת הפלטפורמה: אתם מאמתים אותה במפתח ציבורי שנמשך מנקודת קצה ידועה, כך שאין שום סוד לאחסן אצלכם. חותמת הזמן היא חלק מהתוכן החתום, וזה מה שהופך לכידה ישנה לחסרת תועלת לשידור חוזר.

אמתו מול בייטי הבקשה הגולמיים — סריאליזציה מחדש של JSON משנה את הבייטים והחתימה לא תתאים. ניסיונות חוזרים נושאים את אותו X-Tracio-Event-Id, אז בצעו לפיו ניכוי כפילויות.

כותרות בכל מסירה

Text
X-Tracio-Signature: t=1753444800,v1=5257a869e7ecebed...
X-Tracio-Signature-Ed25519: t=1753444800,kid=k1,v1=0Zx0M0n8...
X-Tracio-Event-Type: identification
X-Tracio-Event-Id: req_8f21c4:primary
X-Tracio-Delivery-Attempt: 1
X-Tracio-Payload-Version: 2
אמינות

בנוי כדי לא לאבד אירועים

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

אירועים בשנייה דרך webhook יחיד, לעומת כ-50 לפני הבנייה מחדש ביולי
44–140 msזמן מסירה p50 מהאירוע ועד נקודת הקצה שלכם
ניסיונות מסירה בסולם מתרחב, פרוסים על עד 8.7 שעות
מתוך 90,000 אירועים שנמסרו בתרגיל שהפיל צומת מסירה תחת עומס

ניסיונות חוזרים שמתאימים לתקלות אמיתיות

5 שנ׳, 30 שנ׳, 2 דק׳, 10 דק׳, 30 דק׳, 2 שע׳, 6 שע׳. הניסיונות הראשונים נוחתים בתוך דקה, כך שהפעלה מחדש קצרה של השירות שלכם לא עולה לכם דבר. כל השהיה נבחרת אקראית בין חצי מהערך הרשום לבין הערך המלא, כך שניסיונות חוזרים לא חוזרים כמטח אחד אחרי תקלה.

השבתה אוטומטית שלא יורה לשווא

webhook מכובה רק כשהכשלים גם מגיעים לסף וגם נמשכים לפחות 15 דקות רצופות — מקבץ מסירות שהצטברו בזמן הפעלה מחדש לא יהרוג את האינטגרציה. תגובת 410 Gone משביתה מיד. לוח הבקרה מציג את הסיבה, את קוד התגובה וכפתור הפעלה מחדש.

החלפת סוד בלי פער

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

יומן מסירות שאפשר לקרוא

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

Data API

שאלו ברגע שאתם מחליטים

ממשק פרטי משרת לשרת בכתובת api.tracio.ai. השרת שלכם מזדהה במפתח סודי וקורא את הנתונים של עצמו. הוא במכוון לא שולח כותרות CORS: מפתח סודי מעניק גישה לכל מה שבסביבת העבודה שלכם ואסור לו להגיע לדפדפן לעולם. זמין מתוכנית Pro ומעלה.

מתודהנתיבמחזיר
GET/v1/visitors/{visitorId}סיכום מבקר: נראה לראשונה ולאחרונה, מספר ביקורים, כתובות IP ומדינות ייחודיות, דפדפנים ומכשירים, היסטוריית סיכון — ובנוסף הסשן האחרון שלו.
GET/v1/visitors/{visitorId}/sessionsרשימת סשנים עם עימוד מבוסס סמן ומסננים לפי טווח תאריכים, תוצאת בוט וניקוד סיכון מינימלי.
GET/v1/visitors/{visitorId}/sessions/latestהסשן האחרון כאובייקט יחיד, בלי מעטפת רשימה.
GET/v1/sessions/{requestId}סשן מסוים אחד. העבירו לצדו visitorId והחיפוש יעבור דרך אינדקס המבקר במקום דרך כל ההיסטוריה שלכם.
GET/v1/visitors/{visitorId}/velocityפעילות לאורך חלון — 1h, 24h או 7d: כמה ביקורים, מכמה כתובות IP, מתוך כמה מדינות, תחת כמה חשבונות.

בדיקת מבקר בקופה

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

בקשה

bash
# Inside your checkout handler, before you authorize the card
curl -s -H "Authorization: Bearer $TRACIO_SECRET_KEY" \
"https://api.tracio.ai/v1/visitors/3f9a1b2c/velocity?window=24h"

תשובה

JSON
{
"window": "24h",
"events": 128,
"uniqueIps": 4,
"uniqueCountries": 2,
"uniqueAccounts": 1,
"meta": { "plan": "business", "retentionDays": 30 }
}

אותם מספרים בכל מקום

ביקור שמנוקד 65.9 בלוח הבקרה מנוקד 65.9 ב-Data API ו-65.9 בגוף ה-webhook. שתי הצגות עצמאיות עלולות להיסחף זו מזו — סקאלות הן הדרך הקלאסית, כשערוץ אחד מוסר לכם 0.93 והשני אומר 93 — ולכן בדיקת התאמה בונה ביקור יחיד, מציגה אותו דרך שני הערוצים ומשווה את השדות הציבוריים על JSON גולמי. ההסכמה נאכפת, לא מוצהרת.

הנחיה — Business ומעלה

עצה, לא רק מספרים

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

לקבל את התשלום?

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

לאשר את ההרשמה?

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

לתת להיכנס?

מתהדקת אוטומטית כשגלאי ההשתלטות על חשבון נורה בביקור.

לספור את ההמרה?

מפרידה הפניה אמיתית מהפניה עצמית או מבוט שקיבל תמריץ.

אוצר מילים בן ארבע מילים

allowאין כאן משהו שדורש פעולה.
challengeבקשו גורם אימות שני.
reviewהחזיקו לבדיקה אנושית.
denyסרבו על הסף.

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

חישוב אחד, שלושה ערוצים

אותו בלוק הנחיה רוכב על ה-webhook, עונה ב-Data API ומוצג בכרטיס המבקר בלוח הבקרה — מערכת כללים אחת, תוצאה אחת, בלי התאמות מצדכם. קראו את העצה לתרחיש שלכם ולא את הכוללת: הכוללת היא פשוט המחמירה מבין הארבע, סיכום ללוחות בקרה ולא החלטת תשלום. גרסת הכללים נשלחת במטען, כך ששינוי בכללים הוא משהו שאתם מבחינים בו ולא משהו שאתם מסיקים מעצה שהשתנתה.

JSON
"guidance": {
"version": 1,
"overall": "review",
"payment": "review",
"registration": "challenge",
"login": "allow",
"affiliate": "allow",
"basis": ["risk", "fraud_reputation"]
}
אינטגרציה

חמישה SDK בצד הלקוח, שני ערוצים בצד השרת

צד הדפדפן נשלח כחמישה SDK — JavaScript, React, Vue 3, Angular ו-Svelte 5. אין SDK לצד השרת, וזה מכוון: השרת שלכם משתלב מעל HTTP רגיל דרך webhooks חתומים ו-Data API. אימות החתימה הוא כתריסר שורות מול וקטור ייחוס שאנחנו מפרסמים, ואין שום דבר נוסף שצריך להמשיך לשדרג בעץ התלויות של השרת שלכם.

SDK לדפדפן
JavaScriptReactVue 3AngularSvelte 5
שאלות נפוצות

שאלות נפוצות

חברו את זה בתוך אחר צהריים אחד

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