TRACIO là một hệ thống nhận dạng theo mô hình client-server. Client thu thập các tín hiệu trình duyệt và gửi chúng đến server, nơi tính toán một mã định danh khách truy cập ổn định, chạy các thuật toán phát hiện và trả về kết quả đã được làm giàu. Phần này giải thích từng giai đoạn của pipeline.
Browser TRACIO Cloud | | |-- Tracio.init({ publicKey }) ---------> | (init, no network) | | |-- tracio.getResult() ----------------> | | 1. Collect 130+ browser signals | | 2. Encrypt (XOR + deflate + B64) | | 3. POST to ingress endpoint | | | | |-- Decrypt & extract signals | |-- Compute visitor ID (MurmurHash3-128) | |-- Run bot detection (weighted scoring) | |-- Run smart signals (server-side enrichment) | |-- Run IP intelligence (VPN/proxy/Tor) | |-- Store visit event | | |<-- JSON response ------------------- | | visitorId, confidence, | | bot detection, smart signals | | | |-- Store visitor cookie (_vid_t) -----> | (365-day persistence)Khi tracio.getResult() được gọi, client thu thập hơn 130 tín hiệu trình duyệt riêng biệt được tổ chức thành các tier. Việc thu thập sử dụng một pipeline nhiều pha với Web Worker và các iframe dùng chung để tối ưu hiệu năng.
| Danh mục | Số lượng tín hiệu | Ví dụ |
|---|---|---|
| Canvas & WebGL | 9 | Canvas fingerprint, WebGL renderer, WebGL parameters, WebGPU |
| Audio | 3 | AudioContext fingerprint, base latency, DRM timing |
| Fonts & Rendering | 10 | Font detection, font preferences, MathML, emoji rendering |
| Navigator & Platform | 25 | User-Agent, languages, screen, hardware concurrency, timezone |
| Storage & Cookies | 10 | localStorage, sessionStorage, cookies, storage quota |
| CSS & Media Queries | 10 | Color scheme, HDR, reduced motion, forced colors |
| Network & WebRTC | 3 | TURN probe, connection RTT, app version |
| Bot Detection | 15 | Webdriver flag, automation frameworks, eval length |
| Tamper Detection | 8 | Property getter introspection, prototype chains, native function integrity |
| Custom Extensions | 14 | Math fingerprint, architecture detection, WASM features |
Pipeline thu thập chạy qua bốn giai đoạn để giảm thiểu việc chặn main thread:
Giai đoạn 1 (Ngay lập tức): Các tín hiệu ưu tiên cao và nhanh thu thập (thuộc tính navigator, screen, timezone). TURN probe cũng bắt đầu ở đây vì nó chạy đồng thời.
Giai đoạn 2 (Idle Callback): Các tín hiệu đồng bộ được hưởng lợi từ khoảng thời gian nhàn rỗi (CSS media queries, storage probes, cookie tests).
Giai đoạn 3 (Async): Các tín hiệu yêu cầu API bất đồng bộ hoặc rendering (canvas, WebGL, audio fingerprint, font detection, emoji rendering).
Web Worker: Thu thập tín hiệu tách biệt trong một thread chuyên dụng (WASM feature detection, doNotTrack).
Một iframe ẩn dùng chung được tạo một lần và tái sử dụng bởi nhiều collector (emoji, MathML, system colors, fonts, screen frame) để tránh chi phí tạo iframe riêng cho từng tín hiệu.
Mỗi tín hiệu tuân theo một cấu trúc nhất quán:
interface Signal<T> { s: number // Status code v: T // Value (when successful)}Mã trạng thái:
| Code | Ý nghĩa |
|---|---|
0 | Thành công |
-1 | Không khả dụng (thuộc tính undefined) |
-2 | Kiểm tra phụ thất bại |
-3 | Hành vi bất thường |
-4 | Timeout |
-5 | Đã tắt |
-6 | Bị CSP chặn |
-7 | Lỗi bảo mật |
Các tín hiệu đã thu thập được serialize sang JSON, sau đó được mã hóa và nén trước khi truyền đi:
Serialize JSON: Tất cả giá trị tín hiệu được đóng gói vào một đối tượng JSON được khóa theo tín hiệu, cộng thêm các trường metadata (c cho API key, t cho tag, lid cho linked ID).
Nén: Nếu payload vượt quá 1024 byte, nó được nén bằng CompressionStream("deflate-raw").
Mã hóa XOR: Payload được bọc trong một lớp bao mã hóa:
Mã hóa Base64: Payload đã mã hóa được mã hóa Base64url và gửi làm POST body.
Yêu cầu được gửi đến ingress endpoint với các query parameter cho phiên bản client và API key. CORS credentials được bao gồm để gửi các first-party cookie.
Server nhận payload đã mã hóa và xử lý nó qua nhiều hệ thống con:
Server giải mã lớp bao XOR, giải nén nếu cần và phân tích dữ liệu tín hiệu JSON. Mã trạng thái và giá trị của mỗi tín hiệu được trích xuất và xác thực.
Visitor ID được tính bằng phương pháp tiered hashing (băm phân tầng) (V3):
Tier 1 (Frozen): 20 base62 characters - Stable hardware signals that rarely change - Canvas, WebGL renderer, audio fingerprint, fonts - Provides long-term visitor identity
Tier 2 (Semi-stable): 10 base62 characters - Signals that change with browser updates - User-Agent data, Client Hints, plugins - Extensible without breaking Tier 1
Tier 3 (Volatile): 10 base62 characters - Signals that change frequently - Screen resolution, timezone, language - Used for confidence scoring, not identityMỗi tier trích xuất các tín hiệu được chỉ định của nó, xây dựng một chuỗi chuẩn tắc và băm nó bằng MurmurHash3-x64-128. Ba tier hash được nối lại và mã hóa base62 để tạo ra visitor ID cuối cùng.
Điểm độ tin cậy (0.0 đến 1.0) cho biết hệ thống chắc chắn đến mức nào rằng khách truy cập này đã được nhận dạng chính xác:
_vid_t đã mã hóa trùng khớp, độ tin cậy đạt mức tối đa.Bot detection engine chạy nhiều detector, các đầu ra được đánh trọng số của chúng được kết hợp thành một bot score (ngưỡng: bot ≥ 0.70, suspicious ≥ 0.30; một tín hiệu hard-fail buộc phán định là bot). Các detector đóng góp bao gồm:
Các tín hiệu làm giàu phía server được tính từ dữ liệu tín hiệu thô và IP intelligence. Chúng bao gồm phát hiện VPN/proxy/Tor, định vị địa lý IP, phân tích can thiệp trình duyệt và chấm điểm nghi ngờ.
Hệ thống con IP intelligence cung cấp:
Server trả về một phản hồi JSON chứa:
{ "visitorId": "X7fh2Hg9LkMn3pQr", "bot": { "detected": false, "confidence": 2, "reasons": [] }}Đây là kết quả mà tracio.getResult() resolve về trong trình duyệt. Sự kiện
đầy đủ, đã được làm giàu — bao gồm bot_result chuẩn tắc
(human / bot / uncertain), định vị địa lý và smart signals — được
gửi đi phía server thông qua webhook và hiển thị trong
dashboard.
Client lưu một visitor token vào cả first-party cookie (hết hạn sau 365 ngày, SameSite=Lax) và localStorage để duy trì qua các phiên.
| Bước | Vị trí | Thời lượng | Mô tả |
|---|---|---|---|
| 1 | Browser | ~5ms | Khởi tạo agent, tạo iframe dùng chung |
| 2 | Browser | ~50-150ms | Thu thập hơn 130 tín hiệu (song song, nhiều pha) |
| 3 | Browser | ~5ms | Mã hóa và nén payload |
| 4 | Network | ~10-50ms | POST đến server |
| 5 | Server | ~5-20ms | Giải mã, trích xuất tín hiệu, tính visitor ID |
| 6 | Server | ~5-15ms | Chạy bot detection và smart signals |
| 7 | Server | ~5ms | Xây dựng phản hồi |
| 8 | Network | ~10-50ms | Trả về phản hồi JSON |
| 9 | Browser | ~1ms | Lưu visitor cookie |
Tổng round-trip: Thông thường 80-300ms tùy thuộc vào điều kiện mạng và khả năng của trình duyệt.