TRACIO วิเคราะห์ที่อยู่ IP ของผู้เข้าชมทุกรายที่ฝั่งเซิร์ฟเวอร์ โดยจะทำเครื่องหมาย VPN, พร็อกซี, โหนดทางออก (exit node) ของ Tor และแหล่งที่มาแบบดาต้าเซ็นเตอร์ และระบุตำแหน่งทางภูมิศาสตร์ระดับเมือง การวิเคราะห์ทั้งหมดทำงานที่ฝั่งเซิร์ฟเวอร์โดยไม่มีการพึ่งพาฝั่งไคลเอนต์
IP intelligence ส่งถึงแอปพลิเคชันของคุณผ่าน payload ของ webhook: อ็อบเจ็กต์
network (ค่าบูลีนของ VPN/พร็อกซี/Tor/ดาต้าเซ็นเตอร์ พร้อมประเภทการเชื่อมต่อ) และอ็อบเจ็กต์
geo (ประเทศ, เมือง, พิกัด, เขตเวลา) จะถูกส่งมาในทุก
webhook ส่วน ISP และ ASN จะเพิ่มเข้ามาตั้งแต่แผน Business ขึ้นไป
ดูรูปแบบ payload ทั้งหมดและการตรวจสอบลายเซ็นได้ที่ Webhooks
การจำแนก VPN, พร็อกซี, Tor และดาต้าเซ็นเตอร์ ระบุได้จาก IP ที่เชื่อมต่อเข้ามา
โดยใช้ฐานข้อมูล IP intelligence เชิงพาณิชย์ (IP2Location สำหรับประเภท VPN/พร็อกซี/Tor,
MaxMind สำหรับการระบุตำแหน่งทางภูมิศาสตร์และ ASN) แต่ละรายการจะแสดงเป็นค่าบูลีนเดียวใน
อ็อบเจ็กต์ network ของ webhook — ไม่มีการแยกย่อยตามวิธีการหรือคะแนนความเชื่อมั่นใน
payload สาธารณะ
| Flag | ฟิลด์ | ความหมาย |
|---|---|---|
| VPN | network.vpn | IP เป็นของผู้ให้บริการ VPN ที่รู้จัก |
| พร็อกซี | network.proxy | IP เป็นพร็อกซีแบบดาต้าเซ็นเตอร์หรือ residential |
| Tor | network.tor | IP เป็นโหนดทางออกของ Tor ที่รู้จัก |
| ดาต้าเซ็นเตอร์ | network.datacenter | IP เป็นของผู้ให้บริการคลาวด์/โฮสติ้ง |
{ "network": { "vpn": true, "proxy": true, "tor": false, "datacenter": false, "connectionType": "VPN" }}// `payload` is the webhook delivery body (/docs/webhooks)if (payload.network.vpn) { // visitor is connecting through a VPN}พร็อกซีแบบดาต้าเซ็นเตอร์และแบบ residential ต่างก็แสดงเป็น network.proxy; แหล่งที่มาแบบดาต้าเซ็นเตอร์
จะถูกรายงานเพิ่มเติมเป็น network.datacenter การจำแนกมาจาก
ฐานข้อมูลพร็อกซีของ IP2Location ซึ่งครอบคลุมผู้ให้บริการคลาวด์/โฮสติ้งรายใหญ่ (AWS,
Google Cloud, Azure, Oracle Cloud, Alibaba Cloud, DigitalOcean, Hetzner, OVH,
Linode/Akamai, Vultr และอื่น ๆ)
{ "network": { "vpn": false, "proxy": true, "tor": false, "datacenter": true, "connectionType": "DCH" }}การจับคู่โหนดทางออกของ Tor กับ IP ที่เชื่อมต่อเข้ามาจะแสดงเป็น network.tor แยกต่างหากจากนั้น
ตัว Tor Browser เองจะถูกจดจำที่ฝั่งไคลเอนต์จากการตั้งค่าต่อต้าน fingerprinting
โดยไม่ขึ้นกับเส้นทางเครือข่าย — ดู
Smart Signals
การระบุตำแหน่งทางภูมิศาสตร์ระดับเมืองระบุได้ที่ฝั่งเซิร์ฟเวอร์จาก IP ที่เชื่อมต่อเข้ามา
(MaxMind) และส่งมาในอ็อบเจ็กต์ geo ของ webhook
| ฟิลด์ | ประเภท | คำอธิบาย | แผน |
|---|---|---|---|
geo.country | string | รหัสประเทศ ISO 3166-1 alpha-2 | ทั้งหมด |
geo.city | string | ชื่อเมือง | ทั้งหมด |
geo.lat | number | ละติจูดโดยประมาณ | ทั้งหมด |
geo.lon | number | ลองจิจูดโดยประมาณ | ทั้งหมด |
geo.timezone | string | ตัวระบุเขตเวลาแบบ IANA | ทั้งหมด |
{ "geo": { "country": "CZ", "city": "Prague", "lat": 50.05, "lon": 14.4, "timezone": "Europe/Prague" }}ในแผน Business และ Enterprise จะระบุผู้ให้บริการเครือข่ายด้วย โดยใน payload ของ webhook
ทั้งสองฟิลด์จะอยู่ในอ็อบเจ็กต์ network:
{ "network": { "vpn": false, "proxy": false, "tor": false, "datacenter": false, "isp": "Comcast Cable", "asn": 7922 }}เมื่ออ่านเซสชันผ่าน Data API การจัดวางจะต่างออกไปเล็กน้อย: isp จะอยู่ในอ็อบเจ็กต์ geo
ส่วน asn อยู่ใน network ข้อมูลชุดเดียวกันแต่มีสองพื้นผิว — ให้อ่านฟิลด์จากตำแหน่งที่พื้นผิวที่คุณใช้งานวางไว้
ตั้งแต่แผน Pro ขึ้นไป webhook จะมีบล็อก velocity มาด้วย ซึ่งบอกว่าผู้เข้าชมเคลื่อนที่ไปมามากเพียงใดในช่วงที่ผ่านมา
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
velocity.events5m | number | เหตุการณ์จากผู้เข้าชมรายนี้ใน 5 นาทีล่าสุด |
velocity.uniqueIps | number | จำนวน IP ที่ต่างกันซึ่งพบสำหรับผู้เข้าชมรายนี้ |
velocity.uniqueLocations | number | จำนวนตำแหน่งที่ต่างกันซึ่งพบสำหรับผู้เข้าชมรายนี้ |
บล็อกนี้จะมีอยู่เมื่อตัวนับของผู้เข้าชมพร้อมใช้งาน ณ เวลาที่เกิดเหตุการณ์ (โดยปกติคือเฟส primary)
การไม่มีบล็อกหมายถึง “ไม่มีข้อมูล” ไม่ได้หมายถึงศูนย์ — อย่าตีความการที่ไม่มีบล็อกว่า “ไม่มีกิจกรรมผิดปกติ”
การจับคู่กับ IP-blocklist ไม่ได้ เป็นส่วนหนึ่งของสัญญาสาธารณะ ทั้ง payload ของ webhook และ
แดชบอร์ดไม่เปิดเผยหมวดหมู่ blocklist ส่วน webhook สำหรับความเสี่ยงด้านเครือข่ายคือค่าบูลีน
network ประเภทการเชื่อมต่อ และตัวนับ velocity ข้างต้น ให้ใช้สิ่งเหล่านี้ร่วมกับฟิลด์ decision
และ bot (ดู Smart Signals) สำหรับการตัดสินใจด้านความเสี่ยง
โค้ดนี้อ่านอ็อบเจ็กต์ network จาก payload ของ webhook โดยตรง ดู payload ทั้งหมดและการตรวจสอบลายเซ็นได้ที่
Webhooks
// `payload` is the webhook delivery body (/docs/webhooks)function assessIPRisk(payload: WebhookPayload) { const { vpn, proxy, tor, datacenter } = payload.network
const risks: string[] = [] let riskLevel = "low"
if (tor) { risks.push("Tor exit node") riskLevel = "critical" }
if (vpn) { risks.push("VPN detected") riskLevel = riskLevel === "low" ? "medium" : riskLevel }
if (proxy) { risks.push("Proxy detected") riskLevel = riskLevel === "low" ? "medium" : riskLevel }
if (datacenter) { risks.push("Datacenter IP") riskLevel = riskLevel === "low" ? "medium" : riskLevel }
return { riskLevel, risks }}