TRACIO аналізує IP-адресу кожного відвідувача на стороні сервера. Він позначає VPN, проксі, вихідні вузли Tor і походження з дата-центрів, а також визначає геолокацію на рівні міста. Увесь аналіз виконується на стороні сервера без клієнтських залежностей.
IP Intelligence надходить до вашого застосунку через webhook-payload: об'єкт
network (булеві значення VPN/проксі/Tor/дата-центр плюс тип з'єднання) та
об'єкт geo (країна, місто, координати, часовий пояс) доставляються з кожним
webhook. ISP і ASN додаються на тарифах Business і вище. Повну структуру payload
і перевірку підпису дивіться в розділі Webhooks.
Класифікація VPN, проксі, Tor і дата-центру визначається за IP-адресою підключення
за допомогою комерційних баз даних IP Intelligence (IP2Location для типу VPN/проксі/Tor,
MaxMind для геолокації та ASN). Кожна виводиться як окреме булеве значення в об'єкті
network webhook — у публічному payload немає розбивки за методами чи оцінки впевненості.
| Прапорець | Поле | Значення |
|---|---|---|
| VPN | network.vpn | IP належить відомому VPN-провайдеру |
| Proxy | network.proxy | IP є проксі дата-центру або резидентним проксі |
| Tor | network.tor | IP є відомим вихідним вузлом Tor |
| Datacenter | 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}Проксі дата-центру та резидентні проксі обидва відображаються як 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
вебхука обидва поля лежать в об'єкті 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-блоклистами не є частиною публічного контракту: ні webhook-payload, ні
панель керування не надають категорій блоклистів. Webhook-поверхня для мережевого ризику —
це булеві прапорці network, тип з'єднання та лічильники velocity вище; використовуйте їх
разом із полями decision і bot (див. Smart Signals) для рішень
щодо ризику.
Це безпосередньо читає об'єкт network з webhook-payload. Повний 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 }}