TRACIO menyamai pengumpulan sinyal browser FingerprintJS Pro v4 sekaligus
menyediakan SDK-nya sendiri (@tracio/sdk) dan mengirimkan hasil di sisi server melalui webhook. Panduan
ini membahas proses migrasi, detail paritas sinyal, serta perbedaan pada
format SDK dan respons yang perlu Anda perbarui.
| Aspek | FingerprintJS Pro | TRACIO | Kompatibel |
|---|---|---|---|
| Pengumpulan sinyal | XOR + deflate + Base64 | Setara | Ya |
| Jumlah sinyal | ~133 | 130+ (menyamai FingerprintJS + proprieter) | Ya |
| Format sinyal | { s: status, v: value } | Setara | Ya |
| SDK klien | @fingerprintjs/fingerprintjs-pro | @tracio/sdk (Tracio.init) | Ubah kode |
| Bentuk hasil klien | { visitorId, confidence, ... } | { visitorId, bot: { detected, ... } } | Ubah kode |
| Hasil sisi server | Server API (/events) | Dikirim melalui webhook (tanpa REST read API pelanggan) | Ubah kode |
| Webhook | Format webhook FingerprintJS | Payload camelCase datar, X-Tracio-Signature | Ubah kode |
| Mekanisme cookie | _iidt (365 hari) | _vid_t (365 hari, UID buram) | Berbeda |
TRACIO menyamai pengumpulan sinyal browser FingerprintJS Pro v4, diverifikasi melalui uji perbandingan Playwright otomatis yang berjalan berdampingan terhadap endpoint FingerprintJS Pro produksi. Di atas set yang menyamai FingerprintJS, TRACIO mengumpulkan sinyal proprieter (sinyal bot, tamper, antidetect, dan persistensi) yang tidak dimiliki FingerprintJS.
TRACIO adalah layanan cloud terkelola. Buat akun Anda, pilih region data, dan salin public key Anda dari dashboard. Lihat Cloud Deployment untuk panduan lengkap. Public key Anda aman untuk disertakan dalam kode sisi klien.
Sebelum mengalihkan trafik produksi Anda, uji dengan SDK klien TRACIO. Perhatikan bahwa TRACIO menggunakan SDK dan API-nya sendiri — ini bukan pengganti protokol drop-in untuk klien FingerprintJS.
import { Tracio } from "@tracio/sdk"
const tracio = Tracio.init({ publicKey: "5ca175fc...",})
const result = await tracio.getResult()console.log(result)Bandingkan perangkat yang terdeteksi dengan integrasi FingerprintJS Pro Anda yang ada untuk memverifikasi migrasi.
Untuk deployment kritis, jalankan kedua sistem secara bersamaan dan bandingkan hasilnya:
// 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)Perhatikan bahwa visitor ID akan berbeda antar sistem karena dihitung dari basis data sisi server yang berbeda. Metrik kompatibilitas utama adalah bahwa kedua sistem mengidentifikasi perangkat fisik yang sama secara konsisten.
TRACIO menyediakan SDK kliennya sendiri (@tracio/sdk) dan tidak menggunakan kembali
protokol klien FingerprintJS, sehingga ini adalah perubahan kode, bukan pertukaran DNS.
Hapus klien FingerprintJS dan inisialisasi TRACIO dengan public key Anda:
// 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 menyediakan Server API yang Anda polling berdasarkan requestId. TRACIO tidak
menawarkan endpoint REST read yang setara untuk pelanggan — sebagai gantinya, hasil
dikirim ke server Anda sebagai webhook pada saat seorang pengunjung teridentifikasi.
Ganti logika polling Anda dengan handler 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")})Lihat Webhooks untuk payload lengkap dan verifikasi tanda tangan.
Jika Anda menggunakan webhook, daftarkan di dashboard TRACIO. Payload
webhook adalah dokumen camelCase datar yang ditandatangani dengan header
X-Tracio-Signature — ini berbeda dari format webhook FingerprintJS,
jadi perbarui handler Anda sesuai kebutuhan.
Setelah TRACIO terverifikasi di produksi:
TRACIO dan FingerprintJS menggunakan bentuk respons yang berbeda — inilah hal utama yang perlu diperhitungkan saat memindahkan kode.
SDK klien TRACIO menghasilkan hasil yang ringkas:
{ "visitorId": "X7fh2Hg9LkMn3pQr", "bot": { "detected": false, "confidence": 2, "reasons": [] }}Alih-alih respons Server API yang diambil melalui polling, TRACIO mengirimkan payload
webhook camelCase datar per identifikasi — bukan struktur products FingerprintJS:
{ "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 }}Lihat Webhooks untuk payload lengkap.
TRACIO bukan pengganti protokol drop-in untuk FingerprintJS. Selain perbedaan SDK dan bentuk respons di atas, perhatikan:
Visitor ID tidak akan sama antara FingerprintJS Pro dan TRACIO. Visitor ID adalah hash dari sinyal browser, dan setiap sistem menggunakan parameter hashing serta basis data sendiri. Setelah migrasi, setiap pengunjung akan tampak sebagai pengunjung "baru" di basis data TRACIO.
Mitigasi: Gunakan field linkedId untuk memetakan visitor ID TRACIO ke akun pengguna atau sesi Anda yang ada. Setelah masa transisi, basis data pengunjung TRACIO akan terbangun secara alami.
| Sistem | Nama Cookie | Nilai |
|---|---|---|
| FingerprintJS Pro | _iidt (via proxy) | Token teks biasa |
| TRACIO | _vid_t | UID buram (UUID) |
Cookie FingerprintJS Pro yang ada tidak dibawa serta. Pengunjung menerima cookie _vid_t baru dari TRACIO.
TRACIO mengumpulkan sinyal proprieter tambahan yang tidak ada di FingerprintJS Pro. Sinyal ini menyediakan kemampuan deteksi tambahan tetapi tidak memengaruhi kompatibilitas dengan integrasi yang ada.
FingerprintJS Pro menyediakan sealed_result dalam respons (blob terenkripsi untuk verifikasi sisi server). TRACIO saat ini tidak mendukung sealed results. Gunakan webhooks untuk verifikasi sisi server sebagai gantinya.
Setelah migrasi, skor confidence mungkin sedikit lebih rendah selama 24-48 jam pertama saat TRACIO membangun basis data pengunjungnya. Ini wajar dan akan teratasi ketika pengunjung kembali dan membentuk identitas berbasis cookie.
Pastikan Anda telah mengganti klien FingerprintJS dengan @tracio/sdk dan bahwa
Tracio.init() dipanggil dengan public key yang valid untuk
workspace yang benar.