TRACIO JavaScript SDK (@tracio/sdk), tarayıcı sinyallerini toplar ve ziyaretçi tanımlama ile bot tespiti için TRACIO buluta gönderir. Hafiftir, engellemez ve tüm modern tarayıcılarla uyumludur.
npm install @tracio/sdkPaket, eksiksiz TypeScript türleriyle birlikte ESM, CJS ve IIFE derlemeleri sunar.
TRACIO'yu bir bundler olmadan CDN üzerinden kullanmanın iki yolu vardır.
Edge betiği, k sorgu parametresindeki public key'i kullanarak kendini otomatik olarak başlatır. JavaScript gerektirmez:
<script src="https://edge.tracio.ai/s.js?k=PUBLIC_KEY" async></script>Yayımlanan npm paketini unpkg veya jsDelivr üzerinden de yükleyebilirsiniz. Bir TracioSDK global'i sağlar. Bir sürüme sabitleyin:
<script src="https://unpkg.com/@tracio/sdk@0.1.3/dist/index.min.js"></script><script> const tracio = TracioSDK.Tracio.init({ publicKey: "5ca175fc..." })</script>SDK'yı başlatır ve senkron olarak bir TracioInstance döndürür. Agent arka planda yüklenir; örnek metotları, agent hazır olduğunda çözülür.
import { Tracio } from "@tracio/sdk"
const tracio = Tracio.init({ publicKey: "5ca175fc...",})interface TracioConfig { publicKey: string // required region?: "us" | "eu" endpoint?: string scriptUrl?: string linkedId?: string tag?: string debug?: boolean timeoutMs?: number // default 15000}| Seçenek | Tür | Varsayılan | Açıklama |
|---|---|---|---|
publicKey | string | zorunlu | Public key'iniz. Kontrol panelinizden kopyalayın. |
region | "us" | "eu" | yok | İsteğe bağlı veri bölgesi. Ayarlanmadığında SDK, genel https://edge.tracio.ai uç noktasını kullanır (ABD veri yerleşimini ima etmez). us veya eu'ya sabitlemek için açıkça ayarlayın. |
endpoint | string | otomatik | Özel API uç noktası (first-party ile proxy'lenen bir uç nokta için). |
scriptUrl | string | otomatik | Agent betiği için özel URL (first-party ile proxy'lenen bir uç nokta için). |
linkedId | string | yok | Bu ziyaretçiyi sisteminizdeki bir varlığa bağlayan tanımlayıcı. |
tag | string | yok | Sonradan filtreleme için isteğe eklenen serbest biçimli etiket. |
debug | boolean | false | Konsola ayrıntılı tanılama bilgilerini kaydeder. |
timeoutMs | number | 15000 | Zaman aşımı gerçekleşmeden önce sonucun ne kadar süre bekleneceği. |
Tracio.init() farklı bir public key ile birden fazla kez çağrılırsa bir multiple_keys hatası fırlatır.
Kararlı ziyaretçi tanımlayıcısına çözülen bir Promise<string> döndürür.
const visitorId = await tracio.getVisitorId()// "X7fh2Hg9LkMn3pQr"Ziyaretçi kimliği ve bot tespiti sonucuyla birlikte bir Promise<TracioResult> döndürür.
const result = await tracio.getResult()
console.log(result.visitorId)
if (result.bot.detected) { console.warn("bot, confidence:", result.bot.confidence)}interface TracioResult { visitorId: string bot: { detected: boolean confidence: number // 0-100 reasons?: string[] }}Agent yüklendikten ve bir sonuç ürettikten sonra bir kez çağrılır.
tracio.onReady((result) => { console.log("ready:", result.visitorId)})SDK bir hatayla karşılaştığında çağrılır.
tracio.onError((error) => { console.error("tracio error:", error.code, error.message)})Örneği söker ve kaynakları serbest bırakır. Sonraki çağrılar bir destroyed hatasıyla reddedilir.
tracio.destroy()SDK, türü belirlenmiş bir code içeren TracioError örnekleri fırlatır. Dallanmak için isTracioError ve isRetryableError yardımcılarını kullanın:
import { Tracio, isTracioError, isRetryableError } from "@tracio/sdk"
const tracio = Tracio.init({ publicKey: "5ca175fc..." })
try { const result = await tracio.getResult()} catch (error) { if (isTracioError(error)) { if (isRetryableError(error)) { // load_failed / blocked / script_error / network / timeout / server — safe to retry } console.error("TRACIO error:", error.code, error.message) } else { console.error("Unexpected error:", error) }}TracioErrorCode union'ı şunları kapsar:
| Kod | Açıklama |
|---|---|
blocked | İstek engellendi (ör. bir reklam engelleyici tarafından). |
destroyed | Örnek, çağrı tamamlanmadan önce yok edildi. |
invalid_config | Yapılandırma geçersiz (ör. eksik publicKey). |
load_failed | Agent betiği yüklenemedi. |
multiple_keys | Tracio.init() çakışan bir public key ile çağrıldı. |
network | Bir ağ isteği başarısız oldu. |
non_browser | SDK bir tarayıcı ortamının dışında kullanıldı. |
script_error | Agent betiği çalışma zamanında bir hata fırlattı. |
server | Sunucu bir hata döndürdü. |
timeout | İstek timeoutMs süresini aştı. |
load_failed, blocked, script_error, network, timeout ve server yeniden denenebilir; isRetryableError(error) bunlar için true döndürür.
React, Vue, Angular ve Svelte için, core SDK'yı elle bağlamak yerine özel framework paketlerini kullanın:
Her biri @tracio/sdk'yı sarar ve deyimsel ilkeller (provider'lar, plugin'ler, hook'lar, composable'lar ve service'ler) sunar. Framework'e özgü kod parçacıkları için SDK'lara genel bakış sayfasına bakın.
Tracio.init() senkron olarak döner ve agent'ı arka planda yükler. Sayfa oluşturmayı engellemez.timeoutMs (varsayılan 15000 ms) ile sınırlıdır, böylece yavaş bir ağ kodunuzu asla süresiz olarak askıda bırakmaz.