Smart Signals, tarayıcı parmak izlerinden, IP istihbaratından ve davranış analizinden hesaplanan sunucu tarafı zenginleştirme sinyalleridir. Kişisel olarak tanımlanabilir hiçbir bilgi toplamadan her ziyaretçi hakkında derinlemesine bağlam sağlarlar.
Smart Signals — zenginleştirilmiş karar, risk, ağ ve bot sinyalleri — webhook'lar aracılığıyla sunucunuza iletilir (bkz. Webhooks) ve panoda gösterilir. Aşağıdaki örnekler webhook payload biçimini tüketir.
| Sinyal | Açıklama | Yanıt | Platform |
|---|---|---|---|
| VPN Detection | IP istihbaratından VPN kullanımını işaretler | network.vpn: boolean | Web, Mobile |
| Proxy Detection | Datacenter ve residential proxy kullanımını belirler | network.proxy: boolean | Web, Mobile |
| Tor Detection | IP'yi bilinen Tor çıkış düğümleriyle eşleştirir | network.tor: boolean | Web, Mobile |
| Datacenter | Bilinen cloud/hosting sağlayıcılarına ait IP'leri işaretler | network.datacenter: boolean | Web, Mobile |
| IP Geolocation | IP adresinden şehir düzeyinde konum + ASN | geo.{ country, city, lat, lon, timezone, isp } | Web, Mobile |
| Sinyal | Açıklama | Yanıt | Kullanılabilirlik |
|---|---|---|---|
| Browser Tampering | Sahte User-Agent, değiştirilmiş navigator, extension enjeksiyonunu tespit eder | { result: boolean, anomalyScore: number } | Web |
| Antidetect Browsers | Antidetect tarayıcıları (Multilogin, GoLogin, Dolphin) CSS/property yoklamaları ile tespit eder | tampering / bot kararının bir parçası | Web |
| Privacy Settings | Gizlilik odaklı tarayıcı yapılandırmalarını tespit eder (Tor Browser, Brave, Firefox ETP, Safari ITP) | { result: boolean } | Web |
| Developer Tools | Tarayıcı DevTools'un açık olduğunu tespit eder | { result: boolean } | Web — Business & Enterprise |
| Incognito (Safari) | iOS'ta Safari gizli gezinmeyi çıkarsar | { result: boolean } | Web (Safari mobile) |
| Sinyal | Açıklama | Kullanılabilirlik |
|---|---|---|
| Virtual Machine | VMware/VirtualBox/Parallels/QEMU'yu WebGL renderer/vendor, ekran ve hardware concurrency ile tespit eder | Web — Enterprise |
| Emulator | Android emülatörlerini (BlueStacks, Genymotion, Nox, Android SDK) GPU renderer ve UA işaretleri ile tespit eder | Web — tüm planlar |
Yalnızca native tespitler (geliştirme aşamasında). Root, jailbreak, klonlanmış/çift uygulama, Frida enstrümantasyonu ve fabrika ayarlarına sıfırlama tespiti, yalnızca bir native mobile SDK'nın toplayabileceği sinyallere bağlıdır. Bunlar bugün yalnızca web ajanında etkili değildir. Genel tarayıcılar arası incognito tespiti (Chrome/Firefox) de aynı şekilde geliştirme aşamasındadır; şu anda yalnızca Safari mobile gizli gezinme çıkarsanır.
| Sinyal | Açıklama | Yanıt | Platform |
|---|---|---|---|
| Bot Detection | Otomasyon framework'lerini ve headless tarayıcıları belirler | bot.result: "human"|"bot"|"uncertain", bot.type: string, bot.score: number | Web, Mobile |
| Risk Score | Webhook decision nesnesinde istek için toplulaştırılmış risk | decision.riskScore: number, decision.suspectScore: number, decision.action: string | Web, Mobile |
VPN, proxy, Tor ve datacenter bayrakları, ticari IP istihbaratı veritabanları
(IP2Location / MaxMind) kullanılarak ziyaretçinin IP'sinden sunucu tarafında
çözümlenir. Genel webhook payload'u, birleştirilmiş sonuçları network nesnesinde
boolean değerler olarak sunar — network.vpn, network.proxy, network.tor,
network.datacenter — yönteme göre ayrıntı dökümü veya güven dizesi olmadan.
Ayrıntılar için bkz. IP Intelligence.
Geliştirme aşamasında. Genel tarayıcılar arası incognito tespiti (Chrome/Firefox) henüz kullanılabilir değildir. TRACIO şu anda yalnızca Safari mobile gizli gezinmeyi çıkarsar. Bugün genel bir
incognitobayrağına güvenmeyin.
Tampering dedektörü, kimliğini yanlış tanıtmak için tarayıcısını değiştirmiş ziyaretçileri belirler:
navigator özelliklerini değiştiren extension'ları, getter prototiplerini karşılaştırarak tespit ederPluginArray.prototype ve MimeType.prototype zincirlerini doğrularFunction.prototype.toString, Object.getOwnPropertyDescriptor ve diğer kritik fonksiyonların Proxy'lerle değiştirilip değiştirilmediğini test ederanomalyScore (0.0-1.0) tutarsızlık derecesini ölçer. 0.5'in üzerindeki değerler önemli manipülasyona işaret eder.
Webhook decision nesnesi, bir istek için toplulaştırılmış riski taşır:
decision.riskScore (0-100 tam sayı), decision.suspectScore (sayı) ve
decision.action (önerilen eylem). Skor, smart signal çıktılarını toplulaştırır;
aşağıdaki aralıklar, riskScore değerinin risk düzeylerine nasıl eşlendiğini
açıklar:
| Skor Aralığı | Risk Düzeyi | Tipik Göstergeler |
|---|---|---|
| 0-10 | Normal | Temiz sinyaller, bilinen ziyaretçi, residential IP |
| 11-30 | Düşük | Küçük tutarsızlıklar, datacenter IP veya ilk ziyaret |
| 31-60 | Orta | VPN tespit edildi, tarayıcı manipülasyonu veya olağandışı hız |
| 61-80 | Yüksek | Birden fazla risk sinyali, proxy + manipülasyon, yüksek aktivite |
| 81-100 | Kritik | Bot tespit edildi, Tor çıkış düğümü veya ciddi anomaliler |
Skor, etkin smart-signal çıktılarını toplulaştırır — öncelikle IP istihbaratı (VPN/proxy/Tor/datacenter), bot kararı ve tarayıcı manipülasyonu. Doğrulanmış insan etkileşimi (fare/klavye) skoru düşürür.
Gizlilik odaklı dört tarayıcı yapılandırması tespit edilir:
| Tarayıcı | Tespit Yöntemi | Eşik |
|---|---|---|
| Tor Browser | Canvas engellendi + WebGL engellendi + UTC saat dilimi + sınırlı fontlar + yuvarlanmış ekran boyutu | 3+ işaret |
| Brave | Brave UA veya navigator.brave veya Client Hints "Brave" markası | 1+ işaret |
| Firefox ETP (strict) | Storage bölümlenmiş veya canvas direnildi (Firefox UA gerekli) | 1+ işaret |
| Safari ITP | Cookie'ler engellendi veya IndexedDB kısıtlandı (Safari UA gerekli) | 1+ işaret |
Smart Signals sunucunuza webhook payload aracılığıyla ulaşır (tam biçim ve imza doğrulaması için bkz. Webhooks). Aşağıdaki örnekler alanları doğrudan bu payload'dan okur.
// `payload` is the webhook delivery body (/docs/webhooks)const score = payload.decision.riskScoreconst isVPN = payload.network.vpnconst isBot = payload.bot.result === "bot"
if (isBot) { return block("Automated access")}
if (score > 60) { return requireMFA()}
if (isVPN && score > 30) { return requireCaptcha()}
return allow()// `payload` is the webhook delivery body (/docs/webhooks)function computeFraudRisk(payload: WebhookPayload): string { let risk = "low"
if (payload.decision.suspectScore > 60) risk = "high" else if (payload.decision.suspectScore > 30) risk = "medium"
// Escalate when multiple network signals agree if (payload.network.vpn && payload.network.proxy) risk = "high" if (payload.network.tor) risk = "high" if (payload.bot.result === "bot") risk = "high"
return risk}