يحلّل TRACIO عنوان IP لكل زائر من جانب الخادم. فهو يشير إلى شبكات VPN والوكلاء (proxies) وعُقد خروج Tor ومصادر مراكز البيانات، ويحدّد الموقع الجغرافي على مستوى المدينة إضافة إلى ASN. يجري التحليل بالكامل من جانب الخادم دون أي اعتماديات من جانب العميل.
تصل بيانات IP Intelligence إلى تطبيقك عبر حمولة الـ webhook: يُسلَّم الكائن
network (قيم منطقية لـ VPN/الوكيل/Tor/مركز البيانات إضافة إلى نوع الاتصال) والكائن
geo (البلد، المدينة، الإحداثيات، المنطقة الزمنية، مزوّد الخدمة) مع كل
webhook. راجع Webhooks للاطلاع على الشكل الكامل للحمولة والتحقق من
التوقيع.
يُحدَّد تصنيف VPN والوكيل وTor ومركز البيانات انطلاقًا من عنوان IP المتصل
باستخدام قواعد بيانات تجارية لـ IP intelligence (IP2Location لنوع VPN/الوكيل/Tor،
وMaxMind لتحديد الموقع الجغرافي وASN). يظهر كلٌّ منها كقيمة منطقية واحدة في الكائن
network ضمن الـ webhook — ولا يوجد تفصيل لكل طريقة على حدة أو درجة ثقة في
الحمولة العامة.
| Flag | Field | Meaning |
|---|---|---|
| VPN | network.vpn | ينتمي عنوان IP إلى مزوّد VPN معروف |
| Proxy | network.proxy | عنوان IP هو وكيل من مركز بيانات أو وكيل سكني |
| Tor | network.tor | عنوان IP هو عُقدة خروج Tor معروفة |
| Datacenter | 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}يظهر كلٌّ من الوكلاء العاملين على مراكز البيانات والوكلاء السكنيين على أنه 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 نفسه من جانب العميل عبر إعداده المضاد لأخذ البصمة
(مقاومة canvas/WebGL، منطقة زمنية UTC، حجم شاشة مُقرَّب) — راجع
Smart Signals.
يُحدَّد الموقع الجغرافي على مستوى المدينة وASN من جانب الخادم انطلاقًا من عنوان IP المتصل
(MaxMind)، ويُسلَّمان في الكائن geo ضمن الـ webhook.
| Field | Type | Description |
|---|---|---|
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 وتتبّع السرعة (velocity) (النشاط عبر عناوين IP مختلفة / عبر بلدان مختلفة)
ليسا جزءًا من العقد العام الحالي. فلا حمولة الـ webhook ولا
لوحة التحكم تكشفان فئات قوائم الحظر أو فترات السرعة. تقتصر واجهة الـ webhook
الخاصة بمخاطر الشبكة على القيم المنطقية لأعلام network ونوع
الاتصال؛ استخدمها مع الحقلين decision وbot (راجع
Smart Signals) لاتخاذ قرارات المخاطر.
يقرأ هذا الكائن network من حمولة الـ webhook مباشرة. راجع
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 }}