TRACIO วิเคราะห์ที่อยู่ IP ของผู้เข้าชมทุกรายที่ฝั่งเซิร์ฟเวอร์ โดยจะทำเครื่องหมาย VPN, พร็อกซี, โหนดทางออก (exit node) ของ Tor และแหล่งที่มาแบบดาต้าเซ็นเตอร์ และระบุตำแหน่งทางภูมิศาสตร์ระดับเมืองรวมถึง ASN การวิเคราะห์ทั้งหมดทำงานที่ฝั่งเซิร์ฟเวอร์โดยไม่มีการพึ่งพาฝั่งไคลเอนต์
IP intelligence ส่งถึงแอปพลิเคชันของคุณผ่าน payload ของ webhook: อ็อบเจ็กต์
network (ค่าบูลีนของ VPN/พร็อกซี/Tor/ดาต้าเซ็นเตอร์ พร้อมประเภทการเชื่อมต่อ) และอ็อบเจ็กต์
geo (ประเทศ, เมือง, พิกัด, เขตเวลา, ISP) จะถูกส่งมาในทุก
webhook ดูรูปแบบ 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": false, "tor": false, "datacenter": false, "connectionType": "residential" }}// `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": "datacenter" }}การจับคู่โหนดทางออกของ Tor กับ IP ที่เชื่อมต่อเข้ามาจะแสดงเป็น network.tor แยกต่างหากจากนั้น
ตัว Tor Browser เองจะถูกตรวจจับที่ฝั่งไคลเอนต์ผ่านการตั้งค่าต่อต้าน fingerprinting
(การต้านทาน canvas/WebGL, เขตเวลา UTC, ขนาดหน้าจอที่ปัดเศษ) — ดู
Smart Signals
การระบุตำแหน่งทางภูมิศาสตร์ระดับเมืองและ ASN ระบุได้ที่ฝั่งเซิร์ฟเวอร์จาก 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.isp | string | ชื่อผู้ให้บริการอินเทอร์เน็ต |
{ "geo": { "country": "CZ", "city": "Prague", "lat": 50.05, "lon": 14.4, "timezone": "Europe/Prague", "isp": "Comcast Cable" }}การจับคู่กับ IP-blocklist และการติดตาม velocity (กิจกรรมข้าม IP / ข้ามประเทศ)
ไม่ได้ เป็นส่วนหนึ่งของสัญญาสาธารณะปัจจุบัน ทั้ง payload ของ webhook และ
แดชบอร์ดไม่เปิดเผยหมวดหมู่ blocklist หรือช่วงเวลา velocity ส่วน
webhook สำหรับความเสี่ยงด้านเครือข่ายจำกัดอยู่ที่ค่าบูลีน network และ
ประเภทการเชื่อมต่อ ให้ใช้สิ่งเหล่านี้ร่วมกับฟิลด์ 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 }}