Smart Signals คือสัญญาณเสริม (enrichment signals) ฝั่งเซิร์ฟเวอร์ที่คำนวณจากลายนิ้วมือเบราว์เซอร์ (browser fingerprints), IP intelligence และการวิเคราะห์พฤติกรรม สัญญาณเหล่านี้ให้บริบทเชิงลึกเกี่ยวกับผู้เยี่ยมชมทุกคนโดยไม่เก็บข้อมูลที่ระบุตัวบุคคลได้ (personally identifiable information) ใด ๆ
Smart Signals — สัญญาณ decision, risk, network และ bot ที่ผ่านการเสริมข้อมูลแล้ว — จะถูกส่งไปยังเซิร์ฟเวอร์ของคุณผ่าน webhooks (ดู Webhooks) และแสดงบนแดชบอร์ด ตัวอย่างด้านล่างนี้ใช้งานรูปแบบของ webhook payload
| Signal | คำอธิบาย | Response | แพลตฟอร์ม |
|---|---|---|---|
| VPN Detection | ตั้งค่าสถานะการใช้ VPN จาก IP intelligence | network.vpn: boolean | Web, Mobile |
| Proxy Detection | ระบุการใช้ proxy แบบ datacenter และ residential | network.proxy: boolean | Web, Mobile |
| Tor Detection | จับคู่ IP กับ Tor exit node ที่รู้จัก | network.tor: boolean | Web, Mobile |
| Datacenter | ตั้งค่าสถานะ IP ที่เป็นของผู้ให้บริการ cloud/hosting ที่รู้จัก | network.datacenter: boolean | Web, Mobile |
| IP Geolocation | การระบุตำแหน่งระดับเมือง + ASN จากที่อยู่ IP | geo.{ country, city, lat, lon, timezone, isp } | Web, Mobile |
| Signal | คำอธิบาย | Response | ความพร้อมใช้งาน |
|---|---|---|---|
| Browser Tampering | ตรวจจับ User-Agent ปลอม, navigator ที่ถูกดัดแปลง, การฉีดส่วนขยาย (extension injection) | { result: boolean, anomalyScore: number } | Web |
| Antidetect Browsers | ตรวจจับเบราว์เซอร์ antidetect (Multilogin, GoLogin, Dolphin) ผ่านการตรวจสอบ CSS/property | ส่วนหนึ่งของ verdict การ tampering / bot | Web |
| Privacy Settings | ตรวจจับการตั้งค่าเบราว์เซอร์ที่เน้นความเป็นส่วนตัว (Tor Browser, Brave, Firefox ETP, Safari ITP) | { result: boolean } | Web |
| Developer Tools | ตรวจจับเมื่อ DevTools ของเบราว์เซอร์ถูกเปิด | { result: boolean } | Web — Business & Enterprise |
| Incognito (Safari) | อนุมานการเรียกดูแบบส่วนตัวของ Safari บน iOS | { result: boolean } | Web (Safari mobile) |
| Signal | คำอธิบาย | ความพร้อมใช้งาน |
|---|---|---|
| Virtual Machine | ตรวจจับ VMware/VirtualBox/Parallels/QEMU ผ่าน WebGL renderer/vendor, หน้าจอ และ hardware concurrency | Web — Enterprise |
| Emulator | ตรวจจับ Android emulator (BlueStacks, Genymotion, Nox, Android SDK) ผ่าน GPU renderer และ UA marker | Web — ทุกแพ็กเกจ |
การตรวจจับเฉพาะบน native (อยู่ระหว่างการพัฒนา) การตรวจจับ root, jailbreak, แอปที่ถูกโคลน/dual-app, การ instrument ด้วย Frida และการตรวจจับ factory-reset ต้องพึ่งพาสัญญาณที่มีเพียง native mobile SDK เท่านั้นที่เก็บได้ ปัจจุบันสิ่งเหล่านี้ ยังไม่มีผล ในเอเจนต์แบบ web-only ทั่วไป การตรวจจับ incognito แบบข้ามเบราว์เซอร์ (Chrome/Firefox) ก็เช่นกัน ยังอยู่ระหว่างการพัฒนา ปัจจุบันอนุมานได้เฉพาะการเรียกดูแบบส่วนตัวบน Safari mobile เท่านั้น
| Signal | คำอธิบาย | Response | แพลตฟอร์ม |
|---|---|---|---|
| Bot Detection | ระบุเฟรมเวิร์กอัตโนมัติและเบราว์เซอร์แบบ headless | bot.result: "human"|"bot"|"uncertain", bot.type: string, bot.score: number | Web, Mobile |
| Risk Score | ความเสี่ยงรวมของคำขอ อยู่บนอ็อบเจกต์ decision ของ webhook | decision.riskScore: number, decision.suspectScore: number, decision.action: string | Web, Mobile |
แฟล็ก VPN, proxy, Tor และ datacenter จะถูกแปลงค่าฝั่งเซิร์ฟเวอร์จาก IP ของ
ผู้เยี่ยมชม โดยใช้ฐานข้อมูล IP intelligence เชิงพาณิชย์ (IP2Location /
MaxMind) webhook payload สาธารณะจะแสดงผลลัพธ์ที่รวมกันเป็น boolean บน
อ็อบเจกต์ network — network.vpn, network.proxy, network.tor,
network.datacenter — โดยไม่มีการแยกย่อยตามวิธีหรือสตริงความเชื่อมั่น ดู
IP Intelligence สำหรับรายละเอียด
อยู่ระหว่างการพัฒนา การตรวจจับ incognito แบบข้ามเบราว์เซอร์ทั่วไป (Chrome/Firefox) ยังไม่พร้อมใช้งาน ปัจจุบัน TRACIO อนุมานเฉพาะการเรียกดูแบบส่วนตัวบน Safari mobile เท่านั้น อย่าพึ่งพาแฟล็ก
incognitoทั่วไปในวันนี้
ตัวตรวจจับการ tampering จะระบุผู้เยี่ยมชมที่ได้ดัดแปลงเบราว์เซอร์ของตนเพื่อบิดเบือนตัวตน:
navigator โดยเปรียบเทียบ getter prototypePluginArray.prototype และ MimeType.prototypeFunction.prototype.toString, Object.getOwnPropertyDescriptor และฟังก์ชันสำคัญอื่น ๆ ถูกแทนที่ด้วย Proxy หรือไม่anomalyScore (0.0-1.0) วัดปริมาณระดับความไม่สอดคล้อง ค่าที่สูงกว่า 0.5 บ่งชี้ถึงการ tampering ที่มีนัยสำคัญ
อ็อบเจกต์ decision ของ webhook นำพาความเสี่ยงรวมของคำขอ:
decision.riskScore (จำนวนเต็ม 0-100), decision.suspectScore (ตัวเลข) และ
decision.action (การกระทำที่แนะนำ) คะแนนนี้รวมผลลัพธ์ของ smart
signal เข้าด้วยกัน แถบด้านล่างอธิบายว่า riskScore แมปกับระดับความเสี่ยงอย่างไร:
| ช่วงคะแนน | ระดับความเสี่ยง | ตัวบ่งชี้ทั่วไป |
|---|---|---|
| 0-10 | ปกติ | สัญญาณสะอาด, ผู้เยี่ยมชมที่รู้จัก, residential IP |
| 11-30 | ต่ำ | ความไม่สอดคล้องเล็กน้อย, datacenter IP หรือการเยี่ยมชมครั้งแรก |
| 31-60 | ปานกลาง | ตรวจพบ VPN, การ tampering เบราว์เซอร์ หรือ velocity ที่ผิดปกติ |
| 61-80 | สูง | สัญญาณเสี่ยงหลายรายการ, proxy + tampering, กิจกรรมสูง |
| 81-100 | วิกฤต | ตรวจพบบอต, Tor exit node หรือความผิดปกติรุนแรง |
คะแนนนี้รวมผลลัพธ์ของ smart signal ที่ทำงานอยู่ — โดยหลักคือ IP intelligence (VPN/proxy/Tor/datacenter), verdict ของบอต และการ tampering เบราว์เซอร์ การโต้ตอบของมนุษย์ที่ยืนยันแล้ว (เมาส์/คีย์บอร์ด) จะลดคะแนนลง
มีการตรวจจับการตั้งค่าเบราว์เซอร์ที่เน้นความเป็นส่วนตัวสี่รูปแบบ:
| เบราว์เซอร์ | วิธีการตรวจจับ | เกณฑ์ |
|---|---|---|
| Tor Browser | Canvas ถูกบล็อก + WebGL ถูกบล็อก + timezone UTC + ฟอนต์จำกัด + ขนาดหน้าจอที่ปัดเศษ | 3+ marker |
| Brave | Brave UA หรือ navigator.brave หรือแบรนด์ "Brave" ใน Client Hints | 1+ marker |
| Firefox ETP (strict) | Storage ถูกแบ่งพาร์ทิชัน หรือ canvas ถูกต้านทาน (ต้องมี Firefox UA) | 1+ marker |
| Safari ITP | Cookies ถูกบล็อก หรือ IndexedDB ถูกจำกัด (ต้องมี Safari UA) | 1+ marker |
Smart Signals เข้าถึงเซิร์ฟเวอร์ของคุณผ่าน webhook payload (ดู Webhooks สำหรับรูปแบบเต็มและการตรวจสอบลายเซ็น) ตัวอย่าง ด้านล่างนี้อ่านฟิลด์ต่าง ๆ โดยตรงจาก payload นั้น
// `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}