TRACIO は、すべての訪問者のIPアドレスをサーバー側で分析します。VPN、プロキシ、 Tor出口ノード、データセンター起点をフラグ付けし、都市レベルのジオロケーションを 解決します。すべての分析はクライアント側の依存関係なしにサーバー側で実行されます。
IP インテリジェンスは Webhookペイロード を通じてあなたのアプリケーションに届きます。
network オブジェクト(VPN/プロキシ/Tor/データセンターのブール値と接続タイプ)と
geo オブジェクト(国、市、座標、タイムゾーン)は、すべての
Webhookで配信されます。ISPとASNはBusiness以上で追加されます。ペイロード全体の形状と
署名検証については Webhooks を参照してください。
VPN、プロキシ、Tor、データセンターの分類は、商用のIPインテリジェンスデータベース
(VPN/プロキシ/Torタイプは IP2Location、ジオロケーションとASNは MaxMind)を用いて
接続元IPから解決されます。それぞれは Webhookの network オブジェクト上に単一のブール値
として表れます — 公開ペイロードにはメソッドごとの内訳や信頼度スコアはありません。
| フラグ | フィールド | 意味 |
|---|---|---|
| VPN | network.vpn | IPが既知のVPNプロバイダーに属する |
| プロキシ | network.proxy | IPがデータセンターまたはレジデンシャルプロキシである |
| 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}データセンタープロキシとレジデンシャルプロキシはいずれも 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" }}接続元IPでのTor出口ノードの一致は network.tor として表れます。これとは別に、
Tor Browser 自体は、ネットワーク経路とは無関係に、そのアンチフィンガープリンティング
構成によってクライアント側で識別されます —
Smart Signals を参照してください。
都市レベルのジオロケーションは、接続元IP(MaxMind)からサーバー側で解決され、
Webhookの geo オブジェクトで配信されます。
| フィールド | 型 | 説明 | プラン |
|---|---|---|---|
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プランでは、通信事業者も識別されます。Webhookペイロードでは、
両方のフィールドが network オブジェクトに含まれます。
{ "network": { "vpn": false, "proxy": false, "tor": false, "datacenter": false, "isp": "Comcast Cable", "asn": 7922 }}Server API からセッションを読み取る場合は、振り分けが少し異なります。
isp は geo に、asn は network に置かれます。データは同じで表面が2つあるだけなので、
利用している表面がフィールドを置く場所から読み取ってください。
Pro以上では、Webhookに velocity ブロックが含まれます。訪問者が最近どの程度移動して
いるかを示すものです。
| フィールド | 型 | 説明 |
|---|---|---|
velocity.events5m | number | 直近5分間のこの訪問者のイベント数 |
velocity.uniqueIps | number | この訪問者で観測された異なるIPの数 |
velocity.uniqueLocations | number | この訪問者で観測された異なる地点の数 |
このブロックは、イベント時点で訪問者カウンターが利用可能な場合(通常は primary フェーズ)
に含まれます。ブロックがないことは「データなし」を意味し、ゼロを意味しません —
ブロックがないことを「異常な活動がない」と解釈しないでください。
IPブロックリストの照合は、公開契約の一部ではありません。Webhookペイロードも
ダッシュボードも、ブロックリストのカテゴリを公開しません。ネットワークリスクに関する
Webhookの表面は、ブール値の network フラグ、接続タイプ、および上記のベロシティ
カウンターです。リスク判断には、それらを decision および bot フィールド
(Smart Signals を参照)と併せて使用してください。
これは Webhookペイロードの network オブジェクトを直接読み取ります。ペイロード全体と
署名検証については 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 }}