TRACIO, FingerprintJS Pro v4 के ब्राउज़र सिग्नल संग्रह से मेल खाता है, जबकि
अपना स्वयं का SDK (@tracio/sdk) उपलब्ध कराता है और परिणाम सर्वर-साइड पर webhooks के माध्यम से डिलीवर करता है। यह
गाइड माइग्रेशन प्रक्रिया, सिग्नल पैरिटी के विवरण, तथा SDK और रिस्पॉन्स प्रारूपों के उन अंतरों को कवर करती है
जिन्हें आपको अपडेट करना होगा।
| पहलू | FingerprintJS Pro | TRACIO | संगत |
|---|---|---|---|
| सिग्नल संग्रह | XOR + deflate + Base64 | समतुल्य | हाँ |
| सिग्नल संख्या | ~133 | 130+ (FingerprintJS-मेल खाने वाले + प्रोप्राइटरी) | हाँ |
| सिग्नल प्रारूप | { s: status, v: value } | समतुल्य | हाँ |
| क्लाइंट SDK | @fingerprintjs/fingerprintjs-pro | @tracio/sdk (Tracio.init) | कोड बदलाव |
| क्लाइंट परिणाम आकार | { visitorId, confidence, ... } | { visitorId, bot: { detected, ... } } | कोड बदलाव |
| सर्वर-साइड परिणाम | Server API (/events) | webhooks के माध्यम से डिलीवर (कोई कस्टमर REST रीड API नहीं) | कोड बदलाव |
| Webhooks | FingerprintJS webhook प्रारूप | फ्लैट camelCase पेलोड, X-Tracio-Signature | कोड बदलाव |
| कुकी तंत्र | _iidt (365 दिन) | _vid_t (365 दिन, ओपेक UID) | भिन्न |
TRACIO, FingerprintJS Pro v4 के ब्राउज़र सिग्नल संग्रह से मेल खाता है, जिसे प्रोडक्शन FingerprintJS Pro एंडपॉइंट के साथ साथ-साथ चलने वाले स्वचालित Playwright तुलना परीक्षणों के माध्यम से सत्यापित किया गया है। FingerprintJS-मेल खाने वाले सेट के अतिरिक्त, TRACIO ऐसे प्रोप्राइटरी सिग्नल (bot, tamper, antidetect, और persistence सिग्नल) एकत्र करता है जो FingerprintJS एकत्र नहीं करता।
TRACIO एक प्रबंधित क्लाउड सेवा है। अपना अकाउंट बनाएँ, अपना डेटा रीजन चुनें, और डैशबोर्ड से अपनी public key कॉपी करें। पूरी वॉकथ्रू के लिए देखें Cloud Deployment। आपकी public key को क्लाइंट-साइड कोड में शिप करना सुरक्षित है।
अपने प्रोडक्शन ट्रैफ़िक को स्विच करने से पहले, TRACIO के क्लाइंट SDK के साथ परीक्षण करें। ध्यान दें कि TRACIO अपना स्वयं का SDK और API उपयोग करता है — यह FingerprintJS क्लाइंट के लिए कोई ड्रॉप-इन प्रोटोकॉल प्रतिस्थापन नहीं है।
import { Tracio } from "@tracio/sdk"
const tracio = Tracio.init({ publicKey: "5ca175fc...",})
const result = await tracio.getResult()console.log(result)माइग्रेशन को सत्यापित करने के लिए पहचाने गए डिवाइस की तुलना अपने मौजूदा FingerprintJS Pro इंटीग्रेशन से करें।
क्रिटिकल डिप्लॉयमेंट के लिए, दोनों सिस्टम एक साथ चलाएँ और परिणामों की तुलना करें:
// Temporary: run both systems and compareconst fpjsResult = await fpjsAgent.get() // FingerprintJS Pro agentconst tracioResult = await tracio.getResult() // TRACIO instance
// Compare visitor IDs (they will differ — different servers)// But bot detection should be equivalent for the same deviceconsole.log("FPJS visitorId:", fpjsResult.visitorId)console.log("TRACIO visitorId:", tracioResult.visitorId)console.log("FPJS bot:", fpjsResult.bot)console.log("TRACIO bot:", tracioResult.bot)ध्यान दें कि विज़िटर ID सिस्टमों के बीच भिन्न होंगी, क्योंकि उनकी गणना अलग-अलग सर्वर-साइड डेटाबेस से की जाती है। मुख्य संगतता मीट्रिक यह है कि दोनों सिस्टम एक ही भौतिक डिवाइस को निरंतर रूप से पहचानें।
TRACIO अपना स्वयं का क्लाइंट SDK (@tracio/sdk) शिप करता है और FingerprintJS
क्लाइंट प्रोटोकॉल का पुनः उपयोग नहीं करता, इसलिए यह DNS स्वैप के बजाय एक कोड बदलाव है।
FingerprintJS क्लाइंट को हटाएँ और TRACIO को अपनी public key के साथ इनिशियलाइज़ करें:
// Before (FingerprintJS Pro)import * as FingerprintJS from "@fingerprintjs/fingerprintjs-pro"const fpAgent = await FingerprintJS.load({ apiKey: "fpjs-public-key" })const fpResult = await fpAgent.get()
// After (TRACIO)import { Tracio } from "@tracio/sdk"const tracio = Tracio.init({ publicKey: "5ca175fc..." })const result = await tracio.getResult()FingerprintJS Pro एक Server API उपलब्ध कराता है जिसे आप requestId के आधार पर पोल करते हैं। TRACIO
कोई समतुल्य कस्टमर-सामना करने वाला REST रीड एंडपॉइंट प्रदान नहीं करता — इसके बजाय, जैसे ही कोई विज़िटर
पहचाना जाता है, परिणाम webhooks के रूप में आपके सर्वर पर पुश किए जाते हैं।
अपनी पोलिंग लॉजिक को एक webhook हैंडलर से प्रतिस्थापित करें:
// Before (FingerprintJS Pro) — pull by requestIdconst response = await fetch(`https://eu.api.fpjs.io/events/${requestId}`, { headers: { "Auth-API-Key": "fpjs-api-key" },})
// After (TRACIO) — receive a signed webhook per identificationapp.post("/webhook/tracio", (req, res) => { // verify req.headers["x-tracio-signature"], then act on req.body const event = req.body // { requestId, visitorId, bot, geo, network, decision, ... } res.status(200).send("OK")})पूरे पेलोड और सिग्नेचर सत्यापन के लिए देखें Webhooks।
यदि आप webhooks का उपयोग करते हैं, तो उन्हें TRACIO डैशबोर्ड में रजिस्टर करें। यह
webhook पेलोड एक फ्लैट, camelCase दस्तावेज़ है जो
X-Tracio-Signature हेडर के साथ साइन किया गया है — यह FingerprintJS webhook प्रारूप से भिन्न है,
इसलिए अपने हैंडलर को तदनुसार अपडेट करें।
एक बार TRACIO प्रोडक्शन में सत्यापित हो जाने पर:
TRACIO और FingerprintJS अलग-अलग रिस्पॉन्स आकारों का उपयोग करते हैं — कोड पोर्ट करते समय ध्यान देने योग्य यह मुख्य बात है।
TRACIO क्लाइंट SDK एक कॉम्पैक्ट परिणाम में रिज़ॉल्व होता है:
{ "visitorId": "X7fh2Hg9LkMn3pQr", "bot": { "detected": false, "confidence": 2, "reasons": [] }}पोल की गई Server API रिस्पॉन्स के बजाय, TRACIO प्रत्येक पहचान के लिए एक फ्लैट, camelCase
webhook पेलोड डिलीवर करता है — न कि FingerprintJS की products संरचना:
{ "requestId": "1710432000_abc123def", "visitorId": "X7fh2Hg9LkMn3pQr", "identification": { "confidence": 0.95 }, "bot": { "result": "human", "type": "", "score": 0.02 }, "geo": { "country": "CZ", "city": "Prague" }, "network": { "vpn": false, "proxy": false, "tor": false, "datacenter": false }, "decision": { "action": "allow", "riskScore": 4 }}पूरे पेलोड के लिए देखें Webhooks।
TRACIO, FingerprintJS के लिए एक ड्रॉप-इन प्रोटोकॉल प्रतिस्थापन नहीं है। ऊपर बताए गए अलग-अलग SDK और रिस्पॉन्स आकारों के अतिरिक्त, ध्यान दें:
विज़िटर ID FingerprintJS Pro और TRACIO के बीच समान नहीं होंगी। विज़िटर ID ब्राउज़र सिग्नलों का एक hash है, और प्रत्येक सिस्टम अपने स्वयं के hashing पैरामीटर और डेटाबेस का उपयोग करता है। माइग्रेशन के बाद, प्रत्येक विज़िटर TRACIO के डेटाबेस में एक "नए" विज़िटर के रूप में दिखाई देगा।
समाधान: TRACIO विज़िटर ID को अपने मौजूदा उपयोगकर्ता अकाउंट या सत्रों से मैप करने के लिए linkedId फ़ील्ड का उपयोग करें। एक संक्रमण अवधि के बाद, TRACIO का विज़िटर डेटाबेस स्वाभाविक रूप से बनता जाएगा।
| सिस्टम | कुकी नाम | मान |
|---|---|---|
| FingerprintJS Pro | _iidt (प्रॉक्सी के माध्यम से) | प्लेन टोकन |
| TRACIO | _vid_t | ओपेक UID (UUID) |
मौजूदा FingerprintJS Pro कुकीज़ कैरी ओवर नहीं होतीं। विज़िटर को TRACIO से एक नई _vid_t कुकी मिलती है।
TRACIO ऐसे अतिरिक्त प्रोप्राइटरी सिग्नल एकत्र करता है जो FingerprintJS Pro में मौजूद नहीं हैं। ये अतिरिक्त पहचान क्षमताएँ प्रदान करते हैं, लेकिन मौजूदा इंटीग्रेशन के साथ संगतता को प्रभावित नहीं करते।
FingerprintJS Pro रिस्पॉन्स में sealed_result प्रदान करता है (सर्वर-साइड सत्यापन के लिए एक एन्क्रिप्टेड ब्लॉब)। TRACIO वर्तमान में sealed results को सपोर्ट नहीं करता। इसके बजाय सर्वर-साइड सत्यापन के लिए webhooks का उपयोग करें।
माइग्रेशन के बाद, पहले 24-48 घंटों के लिए कॉन्फ़िडेंस स्कोर थोड़े कम हो सकते हैं क्योंकि TRACIO अपना विज़िटर डेटाबेस बनाता है। यह अपेक्षित है और तब हल हो जाता है जब विज़िटर लौटते हैं और कुकी-आधारित पहचान स्थापित करते हैं।
पुष्टि करें कि आपने FingerprintJS क्लाइंट को @tracio/sdk से प्रतिस्थापित कर दिया है और यह कि
Tracio.init() को सही वर्कस्पेस के लिए एक मान्य public key के साथ
कॉल किया गया है।